




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河南科技大学 课程设计报告 课程名称:课程名称:算法设计与分析 设计题目设计题目:罗密欧与朱丽叶迷宫求解问题 院院 系:系: 电子信息工程学院 专专 业:业: 计算机科学与技术 班班 级:级: 计算机 092 班 学生姓名学生姓名: : 学学 号号:09* 起止日期起止日期: 2011 年 5 月 28 日 - 2011 年 6 月 3 日 指导教师指导教师: 孙士保、张明川、冀治航 课程设计题目罗密欧与朱丽叶的迷宫问题 姓名*学号*班级092 班 系别电子信息工程学院专业计算机科学与技术 组别1 人组长 * 组员 * 指导教师姓名孙士保、张明川、冀治航 课程 设计 目的 进一步巩固 C 程序设计和算法设计与分析的基础知识,提升结构化程序、 模块化程序设计的方法和能力, 深入理解数据结构的基本理论,掌握数据存储结 构的设计方法,掌握基于数据结构的各种操作的实现方法,训练对基础知识和基 本方法的综合运用能力,增强对算法的理解能力,提高软件设计能力。在实践中 培养独立分析问题和解决问题的作风和能力。 设计 环境 1. PC 兼容机 2Windows 2000/XP 操作系统 3TC 集成开发环境或其他 C 语言开发环境 课程 设计 要求 和任 务 要求:1熟练掌握回溯法,能够利用回溯法解决实际问题; 2使用文件进行存储和管理。程序启动时可从文件中读取信息,或从键盘 输入信息;运行过程中也可对文件进行存取;退出前可选择将部分信息 保存到文件中; 3不同的功能使用不同的函数实现(模块化) ,对每个函数的功能和调用接 口要注释清楚。对程序其它部分也进行必要的注释。 4对系统进行功能模块分析、画出总流程图和各模块流程图; 5用户界面要求使用方便、简洁明了、美观大方、格式统一。所有功能可 以反复使用,最好使用菜单; 6通过命令行相应选项能直接进入某个相应菜单选项的功能模块; 7所有程序需调试通过。 任务:完成罗密欧与朱丽叶的迷宫问题.设计内容包括: 1确定能对给定的任何位置的罗密欧都能够找到一条通向朱丽叶的路线; 2程序能够演示一条罗密欧找到朱丽叶的路线过程等。 课程设计工作进度计划 序 号起止日期工 作 内 容 1下发任务书,分组,选定课题,查阅相关资料 2总体设计,划分模块 3编制源程序 4上机调试,修改、完善系统 5程序检查 6撰写说明书 河南科技大学 课程设计任务书 课程名称课程名称:算法设计与分析 题题 目目:罗密欧与朱丽叶迷宫求解问题 院院 系:系: 电子信息工程学院 班班 级:级: 计算机科学与技术 092 班 学生姓名学生姓名: : * 指导教师指导教师: 孙士保、张明川、冀治航 起止日期起止日期: 2011 年 5 月 28 日 - 2011 年 6 月 3 日 目录目录 第一章第一章需求分析需求分析.1 1.1 课程设计题目 . .1 1.2 课程设计任务及要求. 1 1.3 软硬件运行环境及开发工具 .1 第二章第二章程序概要设计概要设计.2 2.1 系统流程图. .2 2.2 函数的划分.2 2.3 函数之间的关系.3 第三章 编写代码及运行程序.3 3.1 源程序.3 3.2 操作及运行结果.6 3.3 设计的心得体会.7 第一章第一章 需求分析需求分析 1.1 课程设计题目课程设计题目 对于给定的罗密欧与朱丽叶的迷宫,编程计算罗密欧通向朱丽叶的所有最 少弯道路 程序能够演示一条罗密欧找到朱丽叶的路线过程等 1.2 课程设计任务及要求课程设计任务及要求 罗密欧与朱丽叶的迷宫。罗密欧与朱丽叶身处一个 mn 的迷宫中,如图 所示。每一个方格表示迷宫中的一个房间。这 mn 个房间中有一些房间是封 闭的,不允许任何人进入。在迷宫中任 何位置均可沿 8 个方向进入未封闭的 房间。罗密欧位于迷宫的。 (p,q)方格中,他必须找出一条通向朱丽叶所在 的(r,s)方格的路。在抵达朱丽叶之前,他必须走遍所有未封闭的房间各一次, 而且要使到达朱丽叶的转弯次数为最少。每改变一次前进方向算作转弯一次。 请设计一个算法帮助罗密欧找出这样一条路。 1.3 软硬件软硬件运行环境及开发工具运行环境及开发工具 硬件:装有 windows 操作系统的计算机 软件:Visual C+6.0 第二章第二章 程序概要设计程序概要设计 2.1 系统流程图系统流程图 2.2 函数的划分:函数的划分: (1)函数 1:bool trackback (int x,int y) 递归调用 trackback 函数求出最 优路径。 (2)函数 2:void isfull() 判断房间是否全部走完 (3)函数3:void main() 主函数初始化迷宫数组,并调用trackback函数 输出一条迷宫路线。 输入 m,n,k,p,q,r,s -1-dirs count-0 dep=m*n-k count=1; 1-.i 1-j bestwij =boardij +1-j 直到 ji 直到 ii p=x+diri0 q=y+diri1 x0 boardpq=dep+ 1 di!=i dirs+1-dis 直到 ri m n k; result = new int *2; result0 = new int n*m; result1 = new int n*m; path = new int *2; path0 = new int n*m; path1 = new int n*m; dir = new int m*n; square = new int *m+2;/m+2 是为了方便边界处理 for ( i=0; im+2; i+ ) squarei=new int n+2;/n+2 是也是为了方便边界处理 for(i=0; im+2; i+)/初始化 square 迷宫 for(j=0; jxy; squarexy=-1; /=边界处理= for ( i=0, j=0; im+2; i+ ) squareij = 1; for ( i=0, j=0; jn+2; j+ ) squareij = 1; for ( i=m+1,j=0; jpqrs; dir0 = -1;/方向初始化 trackback( p, q );/回溯 cout turn - 1 endl;/输出转弯数 for ( i = 0; i finalLevel; i+ ) squareresult0iresult1i = i + 1; for ( i = 1; i m + 1; i+)/打印迷宫 for( int j = 1; j n + 1; j+) cout squareij ; cout endl; bool trackback(int p,int q ) /回溯过程 /=将 p、q 放入 path 中= path0level=p; path1level=q; level+;/走出一步 squarepq = 1;/标记起点已经走过 /= if ( p = r for ( int i = 1; i level; i+ ) if ( diri != diri-1 ) count+;/若下一次的方向不同于上一次的方向,判定为一次转弯 if ( count turn ) /找出最小转弯数并保存之 finalLevel = level;/记录最后的步数 turn = count; for ( int i = 0; i level; i+ ) /保存最优路径 result0i = path0i; result1i = path1i; squarepq = 0;/若已经找到朱丽叶房间未走完,则重新置起点为 0 level-;/后退 return false;/该路径不是答案,剪掉该子树 /退出找到朱丽叶的状态 for ( int i = 0; i 8; i+ ) /以下是未找到朱丽叶的状态 向八个方向搜索 int x, y; x = p + dirxi; y = q + diryi; if ( squarexy = 0 ) /若该房间没进入过,则标记其方向并进一步搜索 dirlevel = i; trackback( x, y); squarepq = 0; /回到上一步 level-;/回到上一步 return true;/不需剪掉该子树 bool IsFull() /判断是否走满每个房间 for ( int i = 1; i = m; i+ ) for ( int j= 1; j = n; j+ ) if ( squareij = 0 ) return false; return true; 3.2 操作及运作结果操作及运作结果 输入输出并显示迷宫结果如下: 3.4 设计的心得体会设计的心得体会 通过本次课程设计的训练,增加了我学习算法的兴趣,虽然还不是很明白 其中的具体内容,但已发现算法分析与程序设计的乐趣。老师给了我们四个题 目供选择,从选题到完成程序一步步操作实验不仅对题目有了深入的了解,还 达到了熟练使用 C 语言编程的能力。虽然还有很多复杂的问题是我们的能力所 不及的,但我相信通过一次次实际的训练操作会使我们的解决问题的能力一步 步有所提高。 这次程序设计是让我们学到了好多知识,但也暴露了我们在程序设计中的不 足。让我们更深一步体会到了上机实训的重要性。学校给我们安排实训 是为培养学生在实践中培养独立分析问题和解决问题的作风和能力,提 高实际操作水。让我们了解到除了学习基础知识之外上机实验也是必不 可少的,只有通过多次的操作实验才能够提高自己的解决问题能力 计算机系课程设计指导教师评分表 课程设计题目 姓名学号专业班级 指导教师评语指导教师评语: 指导教师签名: 年 月 日 项项 目目分分 值值评评 分分 要要 素素成成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机械专业理论试题及答案
- 动画专业试题及答案
- 土建专业招聘试题及答案
- 教师招聘专业试题及答案
- 奶茶地摊活动策划方案范文
- 龙湖园林施工方案
- 抗震支架施工方案审核
- 儿童节主题演讲文范
- 2024-2025学年山东省滨州市邹平县七年级(上)期末数学试卷(含答案)
- 山东省青岛市2026届高三上学期期初调研检测语文试卷(含答案)
- 餐饮场所消防安全管理制度范文
- 丰都县龙兴坝水库工程枢纽及附属工程
- 做更好的自己+学案- 部编版道德与法治七年级上册
- 大化集团搬迁及周边改造项目污染场地调查及风险报告
- 医疗机构特种设备安全管理专业解读
- 智能化公共广播系统
- 马克思列宁主义
- 成人癌性疼痛护理-中华护理学会团体标准2019
- 演示文稿小儿雾化吸入
- 知行合一-王阳明传奇课件
- T-CSAE 204-2021 汽车用中低强度钢与铝自冲铆接 一般技术要求
评论
0/150
提交评论