六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 15|回复: 0

农夫过河的四种解法

[复制链接]

升级  16%

80

主题

80

主题

80

主题

举人

Rank: 3Rank: 3

积分
248
 楼主| 发表于 2013-2-1 09:49:01 | 显示全部楼层 |阅读模式
/* * 题目描述:有一个农夫,带着一只狼、一只羊、一颗白菜过河。其中农夫不在的时候狼会吃羊, *           羊会吃白菜。只有一只船,且每次农夫最多只能带一样物品过河。求解决方案。 *  * 思路:1. 过程回溯法。把人、狼、羊、白菜看成A、B、C、D。过河的时候从ABCD中选两个过河,在 *          选一个回来。若发生狼跟羊、羊跟白菜在同一个岸边,且农夫不在场,则回溯. * *       2. 图的遍历。设从南岸到北岸,在南岸ABCD的各个状态是(用二进制表示):0000,在 *          北岸的时候各个状态是:1111。所以过河问题就是从0000起始状态到1111最终状态的 *          过程。易得,总共有16中状态。然后把每一种状态看成图的一个结点,把可以连通的 *          结点用有向边连起来,就构成的一个有向图。从0000这个结点遍历(深度优先或者广 *          度优先)图,遍历到1111结点则找到解。 * *       3. 状态回溯法。设从南岸到北岸,在南岸ABCD的各个状态是(用二进制表示):0000,在 *          北岸的时候各个状态是:1111。所以过河问题就是从0000起始状态到1111最终状态的 *          过程。易得,总共有16中状态。从第一种状态0000开始搜索,搜索当前状态下可以到达的 *          状态,搜索到一个则把这个状态看成当前状态,继续搜索。若出现当前状态搜索无可到达 *          的状态或已遍历所有搜索出来的状态,则回溯。直到到达1111状态。 *        *       4. 状态队列搜索法。跟思路3类似,只是搜索的方式不一样。思路3中用栈的思想进行深度搜索 *          这里采用队列的思想进行广度搜索。 */ 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表