问题:
一群传教士与野人来到河边,双方数量都为 n,小船最大可坐 k人,两岸及小船上的传教士数量不能低于野人,否则会被吃掉,问他们如何安全过河?n > k 。
思路及实现:
这道题其实并不难,严格意义上来说不属于算法题的范畴。主要是考察逻辑的严谨性,几种场景考虑到,然后暴力解就ok了。
直接上代码吧:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date : 2019/3/21 0:41
# @Author: Joy
# @IDE : PyCharm
class MissionaryCrossRiver:
"""
传教士与野人过河问题:双方数量都为 n,小船最大可坐 k人,两岸及小船上的传教士数量不能低于野人,否则会被吃掉,求如何安全过河
"""
def __init__(self, n: int, k: int):
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("传教士 野人 传教士 野人 传教士 野人"