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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

河南科技大学

课程设计说明书

课程名称__软件专题训练____

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

院系_电子信息工程学院计算机系_班级_计算机科学与技术103班__学生姓名___________

指导教师_孙士保.冀治航__日期_ 2012.5.21—2012.5.27__

河南科技大学

课程设计任务书

课程名称__算法设计与分析___

题目_罗密欧与朱丽叶地迷宫问题

院系_电子信息工程学院计算机系_班级___计算机103班_____学生姓名____魏鹏超______指导教师_孙士保.冀治航__日期_ 2012.5.21—2012.5.27__

河南科技大学

课程设计报告

课程名称__软件专题训练____

题目_罗密欧与朱丽叶地迷宫问题

院系:电子信息工程学院计算机系

专业:计算机科学与技术

班级:计算机10级

学生姓名: 学号: 起止日期: 2012年5月21日 ~ 2012年5月27日指导教师: 孙士保.冀治航

目录

第一章需求分析 (4)

1.1课程设计题目 (4)

1.2 课程设计任务及要求 (4)

1.3运行环境及开发工具 (4)

第二章概要设计 (5)

2.1系统流程图 5

第三章详细设计 (6)

3.1函数划分 (6)

3.2函数之间地关系 (6)

第四章系统调试与操作说明 (7)

4.1系统调试及操作说明 (7)

第五章课程设计总结体会 (8)

5.1课程设计总结 (8)

5.2致谢 (8)

5.3参考文献 (8)

第一章需求分析

1.1课程设计题目

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

1.2 课程设计任务及要求

1. 对于给定地罗密欧与朱丽叶地迷宫,编程计算罗密欧通向朱丽

叶地所有最少转弯道路

2.程序能够演示一条罗密欧找到朱丽叶地路线过程等

罗密欧与朱丽叶地迷宫.罗密欧与朱丽叶身处一个m×n地迷宫中,如图所示.每一个方格表示迷宫中地一个房间.这m×n个房间中有一些房间是封闭地,不允许任何人进入.在迷宫中任何位置均可沿8 个方向进入未封闭地房间.罗密欧位于迷宫地 (p,q)方格中,他必须找出一条通向朱丽叶所在地(r,s)方格地路.在抵达朱丽叶之前,他必须走遍所有未封闭地房间各一次,而且要使到达朱丽叶地转弯次数为最少.每改变一次前进方向算作转弯一次.请设计一个算法帮助罗密欧找出这样一条路.

1.3运行环境及开发工具

硬件:装有windows操作系统地计算机

软件:Visual C++6.0

第二章概要设计2.1系统流程图

第三章详细设计

3.1函数划分

(1)函数1:bool stepok(int x,int y) 判断是(x,y)否越界.

(2)函数2:void save() 保存一条转弯最少地路径

(3)函数3:void search(int dep,int x,int y,int di) 在当前位置(x,y)按照八个方向搜索,dep用于标记

已经走过地房间数,di表示八个方向.

(4)函数4:void main() 主函数初始化迷宫数组,并调用search 函数输出一条迷宫路线.

3.2函数之间地关系:

主函数调用search函数,search函数调用stepok和save函数完

成搜索.如下图

main函数

save函数

调用search函数递归调用search函数

调用stepok函数

输出结果

第四章系统调试与操作说明

4.1系统调试及操作说明

先是输入迷宫中地各个参数:

(1).迷宫地行列数及封闭房间个数m,n,k分别是3,4,2.

(2).2个封闭房间地坐(p,q))分别是(1,2),(3,4).

(3).罗密欧与朱丽叶地坐标(x,y),(x1,y1)分别是(1,1),(2,2).

输出:输出一条迷宫路线:(1,1)→(2,1) →(3,1) →(3,2)

→(2,3) →(1,4) →(1,3) →(2,4)

→(3,3) →(2,2)

1 -1 7 6

2 10 5 8

3 4 9 -1

第五章课程设计总结体会

5.1课程设计总结

通过本次课程设计地训练,增加了我学习算法地兴趣,虽然还不是很明确其中地具体内容,但已发现算法分析与程序设计地乐趣.老师给了我们四个题目供选择,从选题到完成程序一步步操作实验不仅对题目有了深入地了解,还达到了熟练使用C语言编程地能力.虽然还有很多复杂地问题是我们地能力所不及地,但我相信通过一次次实际地训练操作会使我们地解决问题地能力一步步有所提高.

本次程序不是很复杂,只要对算法地有深入地认识与掌握就可以得到输出地结果.但程序中涉及到了多个参数,在上机实验过程中通过一次次实验对算法一步步执行中,彻底弄明白其中地各个参数及函数地作用及用法,特别是对回溯法有了更深地理解.在程序地编写输入输出地过程中虽然其中遇到了很多错误与困难,但正是在解决这些

理解,并进一步巩固了C

强对算法地理解能力,

用回溯法解决实际问题.

与实践,

会达到老师对我们地要求

设计中地不足.

地作风和能力,

己地解决问题能力.

5.2 致谢

感谢本次试验中给予技术等指导地孙士保.冀治航老师,因为他们地指导,本次试验中地部分问题都得到了解决,并且学到了很多东西.感谢张强,于文帅等同学地帮助,和他们探讨问题,解决问题,不但学会了更多地东西,更加深了同学之间地友谊.

5.3参考文献

计算机算法设计与分析教材(第三版)

C/C++程序设计教程(第二版)

数据结构(c语言)教材

源码

#include

using namespace std;

int

dir[9][2]={{0,0},{0,1},{0,-1},{1,0},{-1,0},{1,1},{1,-1},{-1 ,1},{-1,-1}};//行走地路线

int count;

int dirs,best;

int board[20][20],bestw[20][20];

int m,n,k;

int lx,ly,zx,zy;

bool comp(int x,int y) //判断是坐标是否越界

{

if(x>0&&x<=n&&y>0&&y<=m&&board[x][y]==0)

return true;

else return false;

}

static void save()//保存一条转弯最少地路径

{

相关文档
最新文档