農夫需要把狼、羊、菜和自己運到河對岸去,只有農夫能夠划船,而且船比較小,除農夫之外每次只能運一種東西,還有乙個棘手的問題,就是如果沒有農夫看著,羊會偷吃菜,狼會吃羊。請考慮一種方法,讓農夫能夠安全地安排這些東西和他自己過河。
本題使用深度優先策略構建行動樹,搭配三種剪枝邏輯以保證結果可行
老婆餓了,要趕回家送飯,細節請讀**,見諒~~
left =
0b1111
right =
0b0000
steps =
[0b1000
,0b1001
,0b1010
,0b1100
]wrong =
[0b0110
,0b0011
]ever =
[right]
path =
defsearch_path
(left, right, ever, path)
:if right ==
0b1111
:print
(path)
return
for step in steps:
ifmax
(left, right)
& step != step:
continue
left_n = left ^ step
right_n = right ^ step
if left_n in wrong or right_n in wrong:
continue
if right_n in ever:
continue
path_n = path[:]
ever_n = ever[:]
search_path(left_n, right_n, ever_n, path_n)
search_path(left, right, ever, path)
第 3 3 課 狼 羊 菜和農夫過河問題
農夫需要把狼 羊 菜和自己運到河對岸去 不知道為啥要運狼,別問我 只有農夫能夠划船,而且船比較小,除農夫之外每次只能運一種東西,還有乙個棘手的問題,就是如果沒有農夫看著,羊會偷吃菜,狼會吃羊。請考慮一種方法,讓農夫能夠安全地安排這些東西和他自己過河。這是乙個很簡單的問題,在狼 羊和菜這個食物鏈上,關...
農夫過河問題
題目描述 有乙個農夫帶乙隻羊 一筐菜和乙隻狼過河。如果沒有農夫看管,則狼要吃羊,羊要吃菜。但是船很小,只夠農夫帶一樣東西過河。問農夫該如何解此難題?我的 include include include include include include include using namespace s...
農夫過河問題
問題 有一人帶著狼羊菜來到河的左岸欲乘乙隻小船過到右岸,每次人只能帶其中乙個過河 當有人在不會有事 當無人在時 就不允 許狼和羊在一起,也不允許羊和菜在一起,設計演算法以最少的次數過河?採用位向量,4個二進位制位的0 1情況表示狀態,顯而易見,共24 16種可能狀態。從高位到低位分別表示農夫 狼 白...