算法实验报告罗密欧与朱丽叶迷宫求解.docx

上传人:b****5 文档编号:4556104 上传时间:2022-12-06 格式:DOCX 页数:8 大小:68.04KB
下载 相关 举报
算法实验报告罗密欧与朱丽叶迷宫求解.docx_第1页
第1页 / 共8页
算法实验报告罗密欧与朱丽叶迷宫求解.docx_第2页
第2页 / 共8页
算法实验报告罗密欧与朱丽叶迷宫求解.docx_第3页
第3页 / 共8页
算法实验报告罗密欧与朱丽叶迷宫求解.docx_第4页
第4页 / 共8页
算法实验报告罗密欧与朱丽叶迷宫求解.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

算法实验报告罗密欧与朱丽叶迷宫求解.docx

《算法实验报告罗密欧与朱丽叶迷宫求解.docx》由会员分享,可在线阅读,更多相关《算法实验报告罗密欧与朱丽叶迷宫求解.docx(8页珍藏版)》请在冰豆网上搜索。

算法实验报告罗密欧与朱丽叶迷宫求解.docx

算法实验报告罗密欧与朱丽叶迷宫求解

河南科技大学

课程设计报告

课程名称:

算法设计与分析

设计题目:

罗密欧与朱丽叶迷宫求解问题   

院  系:

电子信息工程学院       

专  业:

计算机科学与技术       

班  级:

计算机092班         

学生姓名:

学 号:

09************   

起止日期:

2011年5月28日-2011年6月3日

指导教师:

   孙士保、张明川、冀治航  

课程设计题目

罗密欧与朱丽叶的迷宫问题

姓名

***

学号

091040602**

班级

092班

系别

电子信息工程学院

专业

计算机科学与技术

组别

1人

组长

***

组员

***

指导教师姓名

孙士保、张明川、冀治航

课程设计目的

进一步巩固C程序设计和算法设计与分析的基础知识,提升结构化程序、模块化程序设计的方法和能力,深入理解数据结构的基本理论,掌握数据存储结构的设计方法,掌握基于数据结构的各种操作的实现方法,训练对基础知识和基本方法的综合运用能力,增强对算法的理解能力,提高软件设计能力。

在实践中培养独立分析问题和解决问题的作风和能力。

设计环境

1.PC兼容机2.Windows2000/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操作系统的计算机

软件:

VisualC++6.0

 

第二章 程序概要设计

 

2.1系统流程图

 

2.2函数的划分:

(1)函数1:

booltrackback(intx,inty)递归调用trackback函数求出最优路径。

(2)函数2:

voidisfull()判断房间是否全部走完

(3)函数3:

voidmain()主函数初始化迷宫数组,并调用trackback函数输出一条迷宫路线。

2.3.函数之间的关系:

如下图:

  

main函数

isfull函数

调用trackbask函数      递归调用trackbask函数

 

输出结果

第三章 编写代码及运行程序

3.1源程序

#include

intm,n,k;//m*n迷宫,k个封闭房间

intx,y;//迷宫中封闭房间的坐标

intp,q,r,s;//罗密欧与朱丽叶的坐标

int**square;//存储迷宫

int*dir;//用来记录每一步的方向

intlevel(0);//记录正在探测第几步

intfinalLevel(0);//初始化为零

int**result;//记录结果

int**path;

intturn(999);//记录最小拐弯数

intdirx[8]={0,0,1,1,1,-1,-1,-1};//8个方向变量

intdiry[8]={1,-1,-1,0,1,-1,0,1};

booltrackback(intp,intq);

boolIsFull();

voidmain()

{

inti,j;

cin>>m>>n>>k;

result=newint*[2];

result[0]=newint[n*m];

result[1]=newint[n*m];

path=newint*[2];

path[0]=newint[n*m];

path[1]=newint[n*m];

dir=newint[m*n];

square=newint*[m+2];//m+2是为了方便边界处理

for(i=0;i

{

square[i]=newint[n+2];//n+2是也是为了方便边界处理

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 职业规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1