




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河南科技大学 课程设计报告 课程名称 课程名称 算法设计与分析 设计题目设计题目 罗密欧与朱丽叶迷宫求解问题 院院 系 系 电子信息工程学院 专专 业 业 计算机科学与技术 班班 级 级 计算机 092 班 学生姓名学生姓名 学学 号号 09 起止日期起止日期 2011 年 5 月 28 日 2011 年 6 月 3 日 指导教师指导教师 孙士保 张明川 冀治航 课程设计题目罗密欧与朱丽叶的迷宫问题 姓名 学号091040602 班级092 班 系别电子信息工程学院专业计算机科学与技术 组别1 人组长 组员 指导教师姓名孙士保 张明川 冀治航 课程 设计 目的 进一步巩固 C 程序设计和算法设计与分析的基础知识 提升结构化程序 模块化程序设计的方法和能力 深入理解数据结构的基本理论 掌握数据存储结 构的设计方法 掌握基于数据结构的各种操作的实现方法 训练对基础知识和基 本方法的综合运用能力 增强对算法的理解能力 提高软件设计能力 在实践中 培养独立分析问题和解决问题的作风和能力 设计 环境 1 PC 兼容机 2 Windows 2000 XP 操作系统 3 TC 集成开发环境或其他 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 课程设计任务及要求课程设计任务及要求 罗密欧与朱丽叶的迷宫 罗密欧与朱丽叶身处一个 m n 的迷宫中 如图所 示 每一个方格表示迷宫中的一个房间 这 m n 个房间中有一些房间是封闭 的 不允许任何人进入 在迷宫中任 何位置均可沿 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 bestw i j board i j 1 j 直到 ji 直到 ii p x dir i 0 q y dir i 1 x 0 board p q dep 1 di i dirs 1 dis 直到 ri 8 输出 best count bestw 2 3 函数之间的关系 函数之间的关系 如下图 main 函数 isfull 函数 调用 trackbask 函数 递归调用 trackbask 函数 输出结果 第三章第三章 编写代码及运行程序编写代码及运行程序 3 1 源程序源程序 include int m n k m n 迷宫 k 个封闭房间 int x y 迷宫中 封闭房间的坐标 int p q r s 罗密欧与朱丽叶的坐标 int square 存储迷宫 int dir 用来记录每一步的方向 int level 0 记录正在探测第几步 int finalLevel 0 初始化为零 int result 记录结果 int path int turn 999 记录最小拐弯数 int dirx 8 0 0 1 1 1 1 1 1 8 个方向变量 int diry 8 1 1 1 0 1 1 0 1 bool trackback int p int q bool IsFull void main int i j cin m n k result new int 2 result 0 new int n m result 1 new int n m path new int 2 path 0 new int n m path 1 new int n m dir new int m n square new int m 2 m 2 是为了方便边界处理 for i 0 i m 2 i square i new int n 2 n 2 是也是为了方便边界处理 for i 0 i m 2 i 初始化 square 迷宫 for j 0 j n 2 j square i j 0 for i 0 i x y square x y 1 边界处理 for i 0 j 0 i m 2 i square i j 1 for i 0 j 0 j n 2 j square i j 1 for i m 1 j 0 j n 2 j square i j 1 for j n 1 i 0 i p q r s dir 0 1 方向初始化 trackback p q 回溯 cout turn 1 endl 输出转弯数 for i 0 i finalLevel i square result 0 i result 1 i i 1 for i 1 i m 1 i 打印迷宫 for int j 1 j n 1 j cout square i j cout endl bool trackback int p int q 回溯过程 将 p q 放入 path 中 path 0 level p path 1 level q level 走出一步 square p q 1 标记起点已经走过 if p r for int i 1 i level i if dir i dir i 1 count 若下一次的方向不同于上一次的方向 判定为一次转弯 if count turn 找出最小转弯数并保存之 finalLevel level 记录最后的步数 turn count for int i 0 i level i 保存最优路径 result 0 i path 0 i result 1 i path 1 i square p q 0 若已经找到朱丽叶房间未走完 则重新置起点为 0 level 后退 return false 该路径不是答案 剪掉该子树 退出找到朱丽叶的状态 for int i 0 i 8 i 以下是未找到朱丽叶的状态 向八个方向搜索 int x y x p dirx i y q diry i if square x y 0 若该房间没进入过 则标记其方向并进一步搜索 dir level i trackback x y square p q 0 回到上一步 level 回到上一步 return true 不需剪掉该子树 bool IsFull 判断是否走满每个房间 for int i 1 i m i for int j 1 j n j if square i j 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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业机车安全操作培训课件
- 农业大棚安全培训计划课件
- 内镜感控培训课件
- 兴宁宝华园课件公司
- 金融公司借款合同模板5篇
- 电影院会员卡营销方案(3篇)
- 化学物品安全培训周记课件
- 兖州太阳安全培训中心课件
- 七上3《雨的四季》作业设计(含答案)
- 化妆造型培训课件
- 《餐饮点菜》课件
- 公司财务知到智慧树章节测试课后答案2024年秋北京第二外国语学院
- 工厂交叉作业安全管理协议书(2篇)
- 中考英语完型填空常用短语
- 宣传物料技术服务方案设计
- 暴聋(突发性耳聋)中医临床路径及入院标准2020版
- 部编高教版2023·职业模块 中职语文 2.《宁夏闽宁镇:昔日干沙滩今日金沙滩》 课件
- 【MOOC】生命的教育-浙江大学 中国大学慕课MOOC答案
- 高血压个案护理案例
- 四川省三级综合医院评审标准实施细则(2023年版)
- 心肺复苏术课件2024新版
评论
0/150
提交评论