实验四 图的搜索实验
实验目的
熟悉图的相关操作,掌握图的搜索算法及其应用,同时进一步练习栈与队列在实际问题中的应用。
时间要求:4+4学时
问题描述:
一只老鼠走进了一个迷宫,这个迷宫是由M行N列(如:10行8列)的方格构成的,相邻方格之间可能是相通的,也可能有墙相隔,各方格位置由其对应坐标确定,如图所示。迷宫在(1,1)处有一个入口,在(M,N)处有一个出口,在入口和出口之间有通路相通。问题是让你帮助老鼠找出从入口到出口的一条最短路径。
00001000
11001010
00010000
00001010
10100000
00111011
10001000
基本要求:
为老鼠找出一条从入口到出口的最短路径。
实现提示:
1、 迷宫用数组表示,1代表是墙走不通,0表示可以通行。边界可以扩充为墙,即M×N迷宫用(M+2)×(N+2)数组表示。
2、 向4个方向前进时的位移量可以用以下数组表示,处理时方便。
int move[4][2]={ {0,1},{1,0},{0,-1},{-1,0} };
3、 采用图的广度优先搜索算法。
需要掌握知识:bfs、栈
解决问题的步骤:
1、理解bfs,明白bfs为什么要用队列(搞清楚入队列有什么用)
2、明白为什么要用栈
3、明白编程的一些细节问题(加墙的问题、mark数组的问题)
此题目的是要找最短路径。
不能用dfs。因为dfs只能找到路的数量 而找到的不一定最短