如何通过编程来解决农夫过河问题?

关于农夫过河问题,想必大家都听说过,这样我就不细讲了,如果没有听说那就百度一下。这个问题曾经困扰我很长世间,自己一直想通过编程的方法解决,不过都没成功。后来一段时间自己就没怎么放在心上了,直到最近突然想起来这个问题。
自己也想了一个思路,就是分别将河两岸的“货物”看作两个集合,农夫的往返相当于两个集合之间进行差集、并集运算。但是的话,有些运算是无法进行的,比如你将兔子运过去后,不能立刻运回来(不然陷入循环之中);还有就是第一次运兔子过去,第二次运菠菜过去,再将兔子运回来,第三次将狼运过去的时候,此时就不能将菠菜运回(不然这样也会陷入循环之中)。
我觉得这个思路是可行的,只是自己算法方面比较弱,无法实现。我自己也看了网上的一些解法,思路基本上都是状态之间的转换,不过程序看不太懂。
其实这个问题只是第一阶段,后面还有一个商人和随从过河的问题。我希望能从大家的思路中得到一些启发,请各位不吝赐教!
默认排序 按时间排序

4 个回答

郑启威 编程爱好者
Aloys寒风 地质狗/程序猿
知乎用户

加入知乎

与世界分享你的知识、经验和见解

验证码
已有帐号?
59 人关注该问题