- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
word格式文档
PAGE
专业整理
课程设计报告文档
题目: 罗密欧与朱丽叶的迷宫问题
一.任务的描述
1.问题描述:
罗密欧与朱丽叶的迷宫。罗密欧与朱丽叶身处一个m×n的迷宫中。每一个方格表示迷宫中的一个房间。这m×n个房间中有一些房间是封闭的,不允许任何人进入。在迷宫中任何位置均可沿8个方向进入未封闭的房间。罗密欧位于迷宫的(p,q)方格中,他必须找出一条通向朱丽叶所在的(r,s)方格的路。在抵达朱丽叶之前,他必须走遍所有未封闭的房间各一次,而且要使到达朱丽叶的转弯次数为最少。每改变一次前进方向算作转弯一次。请设计一个算法帮助罗密欧找出这样一条道路。对于给定的罗密欧与朱丽叶的迷宫,编程计算罗密欧通向朱丽叶的所有最少转弯道路。
输入数据:第一行有3个正整数n,m,k,分别表示迷宫的行数,列数和封闭的房间数。接下来的k行中,每行2 个正整数,表示被封闭的房间所在的行号和列号。最后的2 行,每行也有2个正整数,分别表示罗密欧所处的方格(p,q)和朱丽叶所处的方格(r,s)。
结果输出: 将计算出的罗密欧通向朱丽叶的最少转弯次数和有多少条不同的最少转弯道路。文件的第一行是最少转弯次数。文件的第2 行是不同的最少转弯道路数。接下来的n行每行m个数,表示迷宫的一条最少转弯道路。A[i][j]=k表示第k步到达方格(i,j);A[i][j]=-1 表示方格(i,j)是封闭的。 如果罗密欧无法通向朱丽叶则输出“No Solution!”。
输入文件示例
4 3 2
1 2
3 4
1 1
2 2
输出文件示例
6
7
1 -1 9 8
2 10 6 7
3 4 5 -1
2任务目标:(1)确定能对给定的任何位置的罗密欧都能够找到一条通向朱丽叶的路线;
(2)程序能够演示一条罗密欧找到朱丽叶的路线过程等。
3.运行环境: vc++6.0
二.任务设计
1.系统流程图:
程序概要的流程图如下:
2.函数的划分:
(1)函数1:void print() //调用自动显示函数au()和动态显示函数dynamic(),输出一条转弯最少的路径
(2)函数2:void search(intdep ,int x,int y,int di); //执行搜索,结果保存在bestb二维数组中,供输出使用
(3)函数3:bool consistant(int x ,int y,int dep) //约束剪枝函数
(4)函数4:void save(); //save保存找到的最优路线
(5)函数5:int StepOk(int x,int y);//用于判断是否越界和可通过
(6)函数6:void au()// 自动显示一条路径
(7)函数7:void dynamic()//动态显示一条路径
(8)函数8:void init()//完成数据输入
(9)函数9:int main(); //主函数,调用init()和search()及print(),实现相应的功能
3.函数之间的关系:
从主函数开始运行,调用init()函数,输入迷宫行数列数封闭房间数,输入罗密欧与朱丽叶坐标后输出迷宫图;然后开始执行搜索函数search(int ,int,int,int),进行搜索,在搜索函数中会调用剪枝函数consistant()和StepOk()及保存函数save(),将路径保存在bestb矩阵当中;由print()函数调用au()和dynamic()函数,将找到的一条路径在屏幕上动态地输出;
三.分组情况
本人组长负责执行搜索模块,其他两人分别实现自动显示和动态显示
四.编写代码
1.问题1
(1)问题描述:程序需要处理不同的迷宫大小
(2)解决办法:可以预先分配很大的内存空间和动态地分配一个矩阵数组给予解决,这里采用动态分配方式,提高空间利用率
2.问题2
(1)问题描述:执行搜索时,最少转弯数运行结果不对
(2)解决办法:反复检查,没能理解题意,第一步应该可以朝任何方向而都不算转弯才对,于是在判断是否转弯时,还得判断是否为第一步才行
3.问题3
(1)问题描述:执行效率在迷宫较大且可通过房间数很多时低的难以想象
(2)解决办法:通过对搜索过程仔细反复研究,进一步挖掘出限制条件,增强剪枝功能,当迷宫较大且封闭房间数较多或较密集时,明显提高了搜索效率
五.程序运行
1.自动显示功能:
2.动态显示功能:
六、感想认识
通过本次训
您可能关注的文档
最近下载
- 重庆专升本数学2014-2025年真题试卷及答案汇总.docx VIP
- 2025年医疗卫生系统招聘考试(护理学)考前冲刺试题及答案.docx VIP
- (完整版)初中数学新课程标准(2011版)测试题(有答案)2021.docx
- 化学高考命题方向与复习策略(夏建华).ppt VIP
- 冲刺2025年高考大题突破得高分系列 化学01 化工流程综合题(逐空突破)(解析版).docx VIP
- 半导体级四氯化铪的制备方法.pdf VIP
- 冲刺2025年高考大题突破得高分系列 化学03 化学反应原理综合题(逐空突破)(解析版).docx VIP
- 2024-2025学年上海师范大学附属中学高三入学调研英语试题(1)试卷含解析.doc VIP
- 冲刺2025年高考大题突破得高分系列 化学02 化学实验综合题(逐空突破)(解析版).docx VIP
- 建筑电气与智能化通用规范GB55024-2022.pdf VIP
文档评论(0)