问题提出:
对象:农夫、狼、羊、白菜
目标:农夫想划船 把狼、羊、菜和自己运到河对岸,船比较小,农夫每次只能运一种东西过河
约束条件:如果没有农夫看着,羊会偷吃菜,狼会吃羊
考虑一种方法,让农夫能够安全地安排过河。
解题思路:
实际上这是一个状态转换问题,也许做过这个题的童鞋都能给出一个正确答案,比如:
1)带羊过河
2)农夫单独返回
3)带狼过河
4)带羊返回
5)带菜过河
6)单独返回
7)带羊过河
把这个问题看成一个搜索过程,可以采用两种不同的策略:一种广度优先搜索,另一种深度优先搜索。
深度优先代码:
/*******************************************************************************
* 版权所有 (C) linolzhang 2009
*
* 文件名称:PassRiver.cpp
* 内容说明:
深度优先算法实现过河问题
**********************************************************************

本文探讨了经典的农夫过河问题,涉及农夫、狼、羊和白菜四者如何安全过河。解题关键在于理解这是一个状态转换问题,通过广度优先或深度优先搜索策略来解决。文中提到了一个深度优先搜索的解题步骤,并鼓励读者自行实现广度优先搜索算法。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



