#coding=utf-8
class CRiver:
def __init__(self, n, k):
self.n = n
self.k = k
self.count = 0
def cross_river(self):
k = self.k
a = b = self.n
c = d = 0
e = f = 0
# 传教士一次能
p_max = k - k // 2
print(" 左岸 小船({}) 右岸".format(k))
print("传教士 野人 传教士 野人 传教士 野人")
print("({}, {}, '<-', 0, 0, ' ', 0, 0)".format(a, b))
if self.n / k > 2:
print("无解")
return
while a > 0:
# 剩下的传教士恰好可以坐满小船
if a == k and c == 0:
a -= k
b += d
c = k
d = 0
self.move(a, b, c, d, e, f)
break
# 第一次过河,送些野人过去开船
if c == 0 and d == 0:
b -= k - 1
d += k - 1
self.move(a, b, c, d, e, f)
d -= k - 2
f += k - 2
self.move(a, b, c, d, e, f)
if c == 0 and d == 1:
p1 = a - k
p2 = b - k
# 尽量送多点传教士过河
if p1 <= p_max:
a -= p1
b -= p2
c += p1
d += p2
self.move(a, b, c, d, e, f)
c -= p1
d -= p2
e += p1
f += p2
self.move(a, b, c, d, e, f)
continue
temp = f - e
if temp == 0:
temp = 1
a -= temp
c += temp
self.move(a, b, c, d, e, f)
c -= temp
e += temp
self.move(a, b, c, d, e, f)
# 收尾工作
c -= k
d += 1
e += k
f -= 1
self.move(a, b, c, d, e, f)
b -= k - 1
d = k
self.move(a, b, c, d, e, f)
d = 1
f += k - 1
self.move(a, b, c, d, e, f)
d += b
b = 0
self.move(a, b, c, d, e, f)
f += d
d = 0
print(a, b, " ", c, d, "->", e, f)
def move(self, a, b, c, d, e, f):
self.count += 1
if self.count % 2 == 0:
print(a, b, "<-", c, d, " ", e, f)
else:
print(a, b, " ", c, d, "->", e, f)
MissionaryAndWildMan = raw_input("请输入传教士和野人(数量相同)的数量:")
Ship = raw_input("请输入船一次能够载人的数量:")
test = CRiver(int(MissionaryAndWildMan), int(Ship))
test.cross_river()
传教士与野人python
1星 需积分: 45 120 浏览量
2019-10-12
20:57:27
上传
评论 10
收藏 44KB RAR 举报
Cielo______
- 粉丝: 20
- 资源: 14
最新资源
- 基于C++实现二叉树的创建,遍历,添加,查找与删除
- 基于C语言实现二叉树的基本操作
- 毕业设计基于STM32的测量温度与压力的数据处理设计C语言完整源码+论文.zip
- 基于MATLAB的PCA算法人脸识别项目源码+GUI界面+说明文档.zip
- 基于STM32的测量温度与压力的数据处理设计源码+论文(毕业设计).zip
- Vision Transformer 网络对不同氨气氧气浓度轨迹RAS 图像数据集的分类,包含训练权重和数据集、迁移学习
- 基于C51带字库LCD12864(ST7920)的keil工程源码,只支持8位并口通讯(不支持串口),可显示中文.zip
- 基于SI4463射频模块433MD-SMA无线模块软硬件技术资料及(SI4463)IC技术资料文档.zip
- (GPS+北斗+GSM)HLK-GS2503模块软硬件开发资料包硬件参考设计(原理图PCB)+技术文档资料.zip
- 基于BERT+Biaffine结构的关系抽取模型源码+文档说明.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈