深度与广度优先搜索迷宫问题c语言,深度与广度优先搜索:迷宫问题.pdf

《数据结构课程设计 》报告

题目:深度与广度优先搜索

--迷宫问题

专 业 计算机科学与技术

学生姓名 李柏

班 级 B 计算机 115

学 号 1110704512

指导教师 巩 永 旺

完成日期 2013 年 1 月 11 日

程序实践报告(2010 )

目 录

1 简介1

2 算法说明1

3 测试结果3

4 分析与探讨6

5 小结8

附 录10

附录 1 源程序清单10

程序实践报告(2010 )

迷宫问题

1 简介

1、图的存储结构

图的存储结构又称图的表示,其最常用的方法是邻接矩阵和邻接表。无论采用

什么存储方式,其目标总是相同的,既不仅要存储图中各个顶点的信息,同时还要

存储顶点之间的所有关系。

2 、图的遍历

图的遍历就是从指定的某个顶点(称其为初始点)出发,按照一定的搜索方法

对图中的所有顶点各做一次访问过程。根据搜索方法不同,遍历一般分为深度优先

搜索遍历和广度优先搜索遍历。

本实验中用到的是广度优先搜索遍历。即首先访问初始点v ,并将其标记为已

i

访问过,接着访问 v 的所有未被访问过的邻接点,顺序任意,并均标记为已访问过,

i

以此类推,直到图中所有和初始点 v 有路径相通的顶点都被访问过为止。鉴于广度

i

优先搜索是将所有路径同时按照顺序遍历,直到遍历出迷宫出口,生成的路径为最

短路径。因此我们采用了广度优先搜索。

无论是深度优先搜索还是广度优先搜索,其本质都是将图的二维顶点结构线性

化的过程,并将当前顶点相邻的未被访问的顶点作为下一个顶点。广度优先搜索采

用队列作为数据结构。

本实验的目的是设计一个程序,实现手动或者自动生成一个 n ×m 矩阵的迷宫,

寻找一条从入口点到出口点的通路。具体实验内容如下:

选择手动或者自动生成一个 n×m 的迷宫,将迷宫的左上角作入口,右下角作

出口,设 “0 ”为通路, “1”为墙,即无法穿越。假设一只老鼠从起点出发,目的

为右下角终点,可向 “上、下、左、右、左上、左下、右上、右下”8 个方向行走。

如果迷宫可以走通,则用“■”代表“1”,用“□”代表“0 ”,用“☆”代表行

走迷宫的路径。输出迷宫原型图、迷宫路线图以及迷宫行走路径。如果迷宫为死迷

宫,则只输出迷宫原型图。

2 算法说明

迷宫中存在通路和障碍,为了方便迷宫的创建,可用 0 表示通路,用 1 表示障

碍,这样迷宫就可以用 0、1 矩阵来描述。设置迷宫的长为 n、宽为 m,范围为 49×

49,用 int maze[N+2][M+2]来表示,这样相当于在迷宫外层包了一层 1,即防止搜

索路径时跳出迷宫。

(1)手动生成迷宫

1

程序实践报告(2010 )

void hand_maze(int m,int n) //手动生成迷宫

{

int i,j;

for(i=0;i

for(j=0;j

{

cin>>maze[i][j];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值