校园导航系统农夫过河问题图的遍历演示数据结构课程设计(实验报告).docx

校园导航系统农夫过河问题图的遍历演示数据结构课程设计(实验报告).docx

所属系部: 所属系部: 计算机科学与技术系 所属系部: 所属系部: 计算机科学与技术系 广东技术师范学院天河学院 数据结构与算法 课程设计报告 题目:校园导航系统 农夫过河问题 图的遍历演示 学号 23 27 28 32 班级:移动121 小组成员: 指导教师: 蔡柳萍 PAGE PAGE # PAGE PAGE # 目录 TOC \o 1-5 \h \z \o Current Document 题目一:农夫过河 3 \o Current Document 一、问题描述 3 \o Current Document 二、基本要求 2 \o Current Document 三、算法思想 2 \o Current Document 四、数据结构 2 \o Current Document 五、模块划分 3 \o Current Document 六、源程序 6 \o Current Document 七、测试数据 7 1)运行测试 错. 误!未定义书签。 \o Current Document 题目二:校园导航 7 \o Current Document 一、问题描述 8 \o Current Document 二、基本要求 8 \o Current Document 三、算法思想 8 四、模块划分 8 五、源程序 10 \o Current Document 六、运行及测试情况 17 \o Current Document 题目二:图的遍历演示 6 \o Current Document 一、问题描述 6 \o Current Document 二、基本要求 6 \o Current Document 三、算法思想 6 \o Current Document 四、模块划分 6 \o Current Document 五、源程序 9 六、运行及测试情况 27 1、主界面 27 2、输入信息运行测试(部分数据) 29 \o Current Document 3、运行测试 30 \o Current Document 课程设计总结 33 题目一:农夫过河 一、问题描述 有一个农夫带一条狼、 一只羊和一棵白菜过河。 如果没有农夫看管, 则狼要吃羊, 羊要吃白菜。但是船很小,只够农夫带一样东西过河。问农夫该如何解此难题? 二、基本要求 1) 编程实现农夫过河的过程; 2) 执行结果中要体现过河的先后顺序 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的 功能要求。 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要 存储在数据文件中。(数据文件的数据读写方法等相关内容在 C语言程序设计的 书上,请自学解决)请在最后的上交资料中指明你用到的存储结构 二、算法思想 求解这个问题的简单的方法是一步一步进行试探,每一步搜索所有可能的选择, 对前一步合适的选择再考虑下一步的各种方案。 要模拟农夫过河问题,首先需要对 问题中每个角色的位置进行描述。一个很方便的办法是用四位二进制数顺序分别表示 农夫、狼、白菜和羊的位置。用 O表示农夫或者某东西在河的南岸, 1表示在河的北 岸。例如整数 5(其二进制表示为 0101)表示农夫和白菜在河的南岸,而狼和羊在北 岸。现在问题变成:从初始状态二进制 0000(全部在河的南岸)出发,寻找一种全部 由安全状态构成的状态序列, 它以二进制1111(全部到达河的北岸)为最终目标,并且 在序列中的每一个状态都可以从前一状态到达。为避免瞎费功夫,要求在序列中不出 现重复的状态。 四、数据结构 实现上述求解的搜索过程可以采用两种不同的策略:一种是广度优先 (breadth_first) 搜索, 另一种是深度优先(depth_first) 搜索。本书只介绍在广 度优先搜索方法中采用的数据结构设计。 广度优先就是在搜索过程中总是首先搜索 下面一步的所有可能状态,再进一步考虑更后面的各种情况。要实现广度优先搜索, 可以使用队列。把下一步所有可能的状态都列举出来,放在队列中,再顺序取出来分 别进行处理,处理过程中把再下一步的状态放在队列里 ,,。由于队列的操作遵循先进 先出的原则,在这个处理过程中,只有在前一步的所有情况都处理完后,才能开始后 面一步各情况的处理。这样,具体算法中就需要用一个整数队列 moveTo它的每个元 素表示一个可以安全到达的中间状态。另外还需要一个数据结构记录已被访问过的各 个状态,以及已被发现的能够到达当前这个状态的路径。由于在这个问题的解决过程

文档评论(0)

1亿VIP精品文档

相关文档