一个人要将狼、羊、菜过河一次只能带一样,他不在时,狼要吃羊,羊要吃菜。怎样才能安全过河?

2020-09-07 教育 96阅读

2种方式:

1、把羊带到河对岸 -> 把狼带到河对岸,再把羊带回来 - 把白菜带到河对岸 - 把羊带到河对岸;

2、把羊带到河对岸 -> 把白菜带到河对岸,再把羊带回来 -把狼带到河对岸 -把羊带到河对岸;

问题分析:

抛开算法,把这个题当成是一个简单的逻辑题的话还是挺好解的,过不了多久你就会发现几个关键的问题:

1、要时刻注意农夫的位置,因为农夫不在地时候狼会吃羊,羊会吃菜;

2、第一步只能把羊带走;

3、最后一步只能是把羊从河对岸带过来;

会发现羊其实是问题的关键,只要保证羊和狼和白菜隔离开来,那么就很容易解这个问题。

扩展资料:

过河问题,其实质就是一种状态的改变,就像这个问题说的,农夫狼羊菜都要从河的这边到对岸去,也就对应了两个状态,一个是没过河的状态,一个是过了河的状态。

所以很自然的联想到了用0和1来表示他们的状态,并且每时每刻,农夫狼羊菜的状态都对应一个特定的状态,比如没过河的状态是0000,四个都没有过河,而过河的状态是1111。这样做的好处是将问题抽象成了计算机能够处理的数据。

当然可以选择暴力穷举法,列出所有可能并找出合理的,这是屡试不爽而且行之有效的方法。但这并不是聪明的做法。如果学习数据结构学习得好的同学,会想到用图的V来描述每一种状态,用E来描述状态之间的对应关系,最后进行图的遍历就能找到答案了

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com