狼羊草和农夫过河问题

问题描述

农夫需要把狼、羊、菜和自己运到河对岸去,只有农夫能够划船,而且船比较小,除农夫之外每次只能运一种东西,还有一个棘手的问题,就是如果没有农夫看着,羊会偷吃菜,狼会吃羊。请考虑一种方法,让农夫能够安全地安排这些东西和他自己过河。

代码实现

本题使用深度优先策略构建行动树,搭配三种剪枝逻辑以保证结果可行
老婆饿了,要赶回家送饭,细节请读代码,见谅~~

left = 0b1111
right = 0b0000
steps = [0b1000, 0b1001, 0b1010, 0b1100]
wrong = [0b0110, 0b0011]
ever = [right]
path = []def search_path(left, right, ever, path):if right == 0b1111:print(path)returnfor step in steps:if max(left, right) & step != step:continueleft_n = left ^ stepright_n = right ^ stepif left_n in wrong or right_n in wrong:continueif right_n in ever:continuepath_n = path[:]path_n.append(step)ever_n = ever[:]ever_n.append(right_n)search_path(left_n, right_n, ever_n, path_n)search_path(left, right, ever, path)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部