数据结构实验报告
实验名称:实验三 农夫过河
学号:***
姓名:gnosed
实验日期:2017.10.30
一、实验目的
1、进一步掌握队列的使用
2、会使用队列进行农夫过河解的搜索
二、实验具体内容
1、实验题目1:
(1)题目
经典的农夫过河问题
一个农夫带着一只狼,一只羊和一颗白菜过河,从西岸到东岸。船太小,他每次过河只能携带一样东西,船只有农夫能撑。问题是狼会吃羊,羊会吃白菜,所以不能单独让狼和羊或者羊和白菜单独在河的一边,但狼不吃白菜。请问农夫采取什么方案,才能将所有东西安全运过河?
要求:使用广度优先搜索农夫过河解,并输出结果。
提示:可以使用STL中的队列进行代码编写。
(2)分析
首先对每件东西的位置进行描述,用4位二进制数顺序分别表示农夫、狼、羊和白菜的位置,0表示在东西河的西岸,1表示在东岸。例如1001表示农夫和白菜在东岸,狼和羊在西岸。
数据结构:
1. int location:用整型location表示位置状态,从初始化状态0(二进制为0000)到终结状态15(二进制为1111)。
2. queue<int> moves:用整型队列moves保存每一步所有可能达到的状态,队列每个元素表示一个安全的状态。按照队列先进先出的原则,只有在前一步的所有状态都处理完后,才开始处理后一步的各状态。
3. &nbs

这篇数据结构实验报告详细介绍了如何使用广度优先搜索(BFS)和位运算解决经典的农夫过河问题。实验通过建立状态模型,使用队列进行状态的搜索,同时运用位运算判断安全状态并进行状态转换。实验结果显示了有效的过河方案,并加深了对队列和BFS的理解。
最低0.47元/天 解锁文章
958

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



