




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
罗密欧与朱丽叶的迷宫问题河南科技大学课程设计报告课程名称: 软件专题训练 设计题目: 罗密欧与朱丽叶的迷宫问题 院 系: 专 业: 班 级: 学生姓名: 学 号: 起止日期: 2012年5月21日 2012年5月27日 指导教师: 课程设计题目罗密欧与朱丽叶的迷宫问题姓名学号班级系别专业组别组长组员指导教师姓名课程设计目的进一步巩固C程序设计和算法设计与分析的基础知识,提升结构化程序、模块化程序设计的方法和能力,深入理解数据结构的基本理论,掌握数据存储结构的设计方法,掌握基于数据结构的各种操作的实现方法,训练对基础知识和基本方法的综合运用能力,增强对算法的理解能力,提高软件设计能力。在实践中培养独立分析问题和解决问题的作风和能力。设计环境1. PC兼容机 2Windows 2000/XP操作系统3TC集成开发环境或其他C语言开发环境课程设计要求和任务要求:1熟练掌握回溯法,能够利用回溯法解决实际问题;2使用文件进行存储和管理。程序启动时可从文件中读取信息,或从键盘输入信息;运行过程中也可对文件进行存取;退出前可选择将部分信息保存到文件中;3不同的功能使用不同的函数实现(模块化),对每个函数的功能和调用接口要注释清楚。对程序其它部分也进行必要的注释。4对系统进行功能模块分析、画出总流程图和各模块流程图;5用户界面要求使用方便、简洁明了、美观大方、格式统一。所有功能可以反复使用,最好使用菜单;6通过命令行相应选项能直接进入某个相应菜单选项的功能模块;7所有程序需调试通过。任务:完成罗密欧与朱丽叶的迷宫问题.设计内容包括:1确定能对给定的任何位置的罗密欧都能够找到一条通向朱丽叶的路线;2程序能够演示一条罗密欧找到朱丽叶的路线过程等。课程设计工作进度计划序 号起止日期工 作 内 容12012.5.21下发任务书,分组,选定课题,查阅相关资料22012.5.22总体设计,划分模块,编制源程序32012.5.23上机调试,修改、完善系统42012.5.25程序检查,撰写说明书,上交报告第一章 需求分析1.1课程设计题目对于给定的罗密欧与朱丽叶的迷宫,编程计算罗密欧通向朱丽叶的所有最少弯道路程序能够演示一条罗密欧找到朱丽叶的路线过程等1.2 课程设计任务及要求罗密欧与朱丽叶的迷宫。罗密欧与朱丽叶身处一个mn的迷宫中,如图所示。每一个方格表示迷宫中的一个房间。这mn 个房间中有一些房间是封闭的,不允许任何人进入。在迷宫中任何位置均可沿8 个方向进入未封闭的房间。罗密欧位于迷宫的。 (p,q)方格中,他必须找出一条通向朱丽叶所在的(r,s)方格的路。在抵达朱丽叶之前,他必须走遍所有未封闭的房间各一次,而且要使到达朱丽叶的转弯次数为最少。每改变一次前进方向算作转弯一次。请设计一个算法帮助罗密欧找出这样一条路。1.3 软硬件运行环境及开发工具硬件:装有windows操作系统的计算机软件:Visual C+6.0 第二章 程序概要设计2.1 系统流程图 输入m,n,k,p,q,r,s -1-dirs count-0dep=m*n-k&x=r&y=s&dirsbest是 否 dirsi 1-jbestwij=boardij+1-j直到ji直到icount 1-ip=x+diri0q=y+diri1x0&x0&ydis直到ridirs boardpq=0; 输出best ,count *bestw2.2函数的划分: (1)函数1:bool trackback (int x,int y) 递归调用trackback函数求出最优路径。(2)函数2:void isfull() 判断房间是否全部走完(3)函数3:void main() 主函数初始化迷宫数组,并调用trackback函数输出一条迷宫路线。2.3函数之间的关系: 如下图: main函数 isfull函数 调用trackbask函数 递归调用trackbask函数 输出结果 第三章 编写代码及运行程序3.1源程序#includeusing namespace std;int dir92=0,0,0,1,0,-1,1,0,-1,0,1,1,1,-1,-1,1,-1,-1;int count;int dirs,best;int board2020,bestw2020;int m,n,k;int sx,sy,ex,ey;bool comp(int x,int y)if(x0&x0&y=m&boardxy=0) return true;else return false;/save保存找到的解void save()int i,j;for(i=1;i=n;i+) for(j=1;j=m;j+) bestwij=boardij;/在当前位置按照8个方向搜索void search(int dep,int x,int y,int di)if(dep=m*n-k&x=ex&y=ey&dirs=best) if(dirsbest) return;else for(int i=1;i=8;i+) if(comp(x+diri0,y+diri1) boardx+diri0y+diri1=dep+1; if(di!=i) dirs+; search(dep+1,x+diri0,y+diri1,i); if(di!=i) dirs-; boardx+diri0y+diri1=0; int main() cout输入迷宫的行数,列数,封锁房间数:nmk; int i,j; int c,d; memset(board,0,sizeof(board);cout输入k个封锁房间的坐标x,y:endl; for(i=0;icd; boardcd=-1;cout输入罗密欧的坐标:sxsy;cout输入朱丽叶的坐标:exey; boardsxsy=1; best=m*n; dirs=-1; search(1,sx,sy,0);cout最少转弯次数:endl; coutbestendl;cout不同的最少转弯道路数endl; coutcountendl;printf(遍历过程如下:); for(i=1;i=n;i+) for(j=1;j=m;j+) coutbestwij ; coutendl;3.2操作及运作结果输入输出并显示迷宫结果如下:3.4设计的心得体会 通过本次课程设计的训练,增加了我学习算法的兴趣,虽然还不是很明白其中的具体内容,但已发现算法分析与程序设计的乐趣。老师给了我们四个题目供选择,从选题到完成程序一步步操作实验不仅对题目有了深入的了解,还达到了熟练使用C语言编程的能力。虽然还有很多复杂的问题是我们的能力所不及的,但我相信通过一次次实际的训练操作会使我们的解决问题的能力一步步有所提高。这次程序设计是让我们学到了好多知识,但也暴露了我们在程序设计中的不足。让我们更深一步体会到了上机实训的重要性。学校给我们安排实训是为培养学生在实践中培养独立分析问题和解决问题的作风和能力,提高实际操作水。让我们了解到除了学习基础知识之外上机实验也是必不可少的,只有通过多次的操作实验才能够提高自己的解决问题能力.致谢在这篇论文即将完成之时,我要在这里特别的感谢一下在我的课程设计过程中帮助和关心过我的老师和同学。在设计的整个实验过程中,孙士保老师给了我很多的关心和帮助。孙老师态度谦逊、专业知识深厚,在技术方面有很深的造诣,对我的设计工作给予了极大的支持和最热诚的帮助。他严谨的治学态度、亲和的工作作风以及深厚的科研知识,都给我留下了深刻的印象。从孙老师身上,我学到了很多东西,不仅是学术知识,还有工作方式、治学态度等。同学们在我整个设计、安装、调试过程中,给了我很多非常好的建议和帮助,使我能顺利地完成课题的实际操作工作。还有同组的同学,都对我给予了帮助,在此一并表示感谢。最后,再一次向所有关心过我、帮助过我的老师和同学送上最深的谢意和最真挚的祝福!参考文献计算机算法设计与分析教材(第三版)c/c+程序设计教程(第二版)数据结构(C语言版)教材附录#includeusing namespace std;int dir92=0,0,0,1,0,-1,1,0,-1,0,1,1,1,-1,-1,1,-1,-1;int count;int dirs,best;int board2020,bestw2020;int m,n,k;int sx,sy,ex,ey;bool comp(int x,int y)if(x0&x0&y=m&boardxy=0) return true;else return false;/save保存找到的解void save()int i,j;for(i=1;i=n;i+) for(j=1;j=m;j+) bestwij=boardij;/在当前位置按照8个方向搜索void search(int dep,int x,int y,int di)if(dep=m*n-k&x=ex&y=ey&dirs=best) if(dirsbest) return;else for(int i=1;i=8;i+) if(comp(x+diri0,y+diri1) boardx+diri0y+diri1=dep+1; if(di!=i) dirs+; search(dep+1,x+diri0,y+diri1,i); if(di!=i) dirs-; boardx+diri0y+diri1=0; int main() cout输入迷宫的行数,列数,封锁房间数:nmk; int i,j; int c,d; memset(board,0,sizeof(board);cout输入k个封锁房间的坐标x,y:endl; for(i=0;icd; boardcd=-1;cout输入罗密欧的坐
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 牛津6年级期末数学试卷
- 清华强基计划数学试卷
- 华夏盛典营销活动策划方案(3篇)
- 门店施工方案范本(3篇)
- 农村小型鱼池施工方案(3篇)
- 海南景区喷泉施工方案(3篇)
- 美式小区施工方案(3篇)
- 北京市昌平区2024-2025学年八年级下学期第一次月考历史题库及答案
- 安徽省六安市金安区2023-2024学年高二上学期第二次月考生物考点及答案
- 心动传媒面试题目及答案
- 2024版《供电营业规则》考试复习题库大全-上(选择、判断题)
- 如果历史是一群喵
- 数据安全重要数据风险评估报告
- 四害消杀培训
- 伐木工安全培训
- 旅游业行业中层管理人员培训方案
- LED外贸英语入门
- 2024年白酒酿造职业技能等级认定(初级工)理论考试复习题库(含答案)
- 自助餐食品安全培训
- 机械图纸识别(修订版)
- 2024年湖北邮政集团招聘笔试参考题库附带答案详解
评论
0/150
提交评论