1、算法实验报告罗密欧与朱丽叶迷宫求解河南科技大学课程设计报告课程名称:算法设计与分析设计题目:罗密欧与朱丽叶迷宫求解问题 院 系: 电子信息工程学院 专 业: 计算机科学与技术 班 级: 计算机092班 学生姓名:学 号:09* 起止日期: 2011年5月28日 - 2011年6月3日指导教师: 孙士保、张明川、冀治航 课程设计题目罗密欧与朱丽叶的迷宫问题姓名*学号091040602*班级092班系别电子信息工程学院专业计算机科学与技术组别1人组长*组员*指导教师姓名孙士保、张明川、冀治航课程设计目的进一步巩固C程序设计和算法设计与分析的基础知识,提升结构化程序、模块化程序设计的方法和能力,深入
2、理解数据结构的基本理论,掌握数据存储结构的设计方法,掌握基于数据结构的各种操作的实现方法,训练对基础知识和基本方法的综合运用能力,增强对算法的理解能力,提高软件设计能力。在实践中培养独立分析问题和解决问题的作风和能力。设计环境1. PC兼容机 2Windows 2000/XP操作系统3TC集成开发环境或其他C语言开发环境课程设计要求和任务要求:1熟练掌握回溯法,能够利用回溯法解决实际问题;2使用文件进行存储和管理。程序启动时可从文件中读取信息,或从键盘输入信息;运行过程中也可对文件进行存取;退出前可选择将部分信息保存到文件中;3不同的功能使用不同的函数实现(模块化),对每个函数的功能和调用接口
3、要注释清楚。对程序其它部分也进行必要的注释。4对系统进行功能模块分析、画出总流程图和各模块流程图;5用户界面要求使用方便、简洁明了、美观大方、格式统一。所有功能可以反复使用,最好使用菜单;6通过命令行相应选项能直接进入某个相应菜单选项的功能模块;7所有程序需调试通过。任务:完成罗密欧与朱丽叶的迷宫问题.设计内容包括:1确定能对给定的任何位置的罗密欧都能够找到一条通向朱丽叶的路线;2程序能够演示一条罗密欧找到朱丽叶的路线过程等。课程设计工作进度计划序 号起止日期工 作 内 容1下发任务书,分组,选定课题,查阅相关资料2总体设计,划分模块3编制源程序4上机调试,修改、完善系统5程序检查6撰写说明书
4、河南科技大学课程设计任务书课程名称:算法设计与分析 题 目:罗密欧与朱丽叶迷宫求解问题院 系: 电子信息工程学院 班 级: 计算机科学与技术092班 学生姓名: * 指导教师: 孙士保、张明川、冀治航 起止日期: 2011年5月28日 - 2011年6月3日第一章 需求分析 .11.1 课程设计题目 . .11.2 课程设计任务及要求 . 11.3 软硬件运行环境及开发工具 .1第二章 程序概要设计.22.1 系统流程图 . .22.2 函数的划分 .22.3函数之间的关系 .3第三章编写代码及运行程序.33.1源程序.33.2操作及运行结果.63.3设计的心得体会.7第一章 需求分析1.1课
5、程设计题目对于给定的罗密欧与朱丽叶的迷宫,编程计算罗密欧通向朱丽叶的所有最少弯道路程序能够演示一条罗密欧找到朱丽叶的路线过程等1.2 课程设计任务及要求罗密欧与朱丽叶的迷宫。罗密欧与朱丽叶身处一个mn的迷宫中,如图所示。每一个方格表示迷宫中的一个房间。这mn 个房间中有一些房间是封闭的,不允许任何人进入。在迷宫中任何位置均可沿8 个方向进入未封闭的房间。罗密欧位于迷宫的。 (p,q)方格中,他必须找出一条通向朱丽叶所在的(r,s)方格的路。在抵达朱丽叶之前,他必须走遍所有未封闭的房间各一次,而且要使到达朱丽叶的转弯次数为最少。每改变一次前进方向算作转弯一次。请设计一个算法帮助罗密欧找出这样一条
6、路。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函数输出一条迷宫路线。2.3函数之间的关系:如下图: main函数isfull函数调用trackbask函数 递归调用trackbask函数输出结果第三章 编写代码及运行程序3
7、.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 dirx8=0,0,1,1,1,-1,-1,-1;/8个方向变量int diry8=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;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是也是为了方便边界处理
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1