迷宫最短路径问题BFS

迷宫最短路径问题

宽度优先搜索BFS

迷宫最短路径问题BFS_第1张图片

迷宫最短路径问题BFS_第2张图片

#include
#include
using namespace std;

const int INF=100000000;

const int MAX_M=100,MAX_N=100 ;
typedef pairP;

char maze[MAX_N][MAX_M+1];//迷宫

int N,M;
int sx,sy;//起点坐标
int gx,gy;//终点坐标
int d[MAX_N][MAX_M];//到各个位置最短距离的数组

//4个方向移动的向量
int dx[4]= {1,0,-1,0},dy[4]= {0,1,0,-1};


//求从(sx,sy)到(gx,gy)的最短距离
//如果无法到达,则是INF

int bfs()
{
	queue

que; //把所有的位置都初始化为INF for(int i=0; i=0&&nx=0&&ny>N>>M; for(int i=0; i>maze[i][j]; if(maze[i][j]=='S') sx=i,sy=j; if(maze[i][j]=='G') gx=i,gy=j;//注意if 等条件语句中如果不适用大括号, }//那么必须中间是逗号,否则if语句的约束只到第一个分号处。 } solve(); return 0; } //10 10 //#S######.# //......#..# //.#.##.##.# //.#........ //##.##.#### //....#....# //.#######.# //....#..... //.####.###. //....#...G#

 

你可能感兴趣的:(ACM,程序设计)