迷宫的最短路径(bfs)

题意:给定一个大小为n*m的迷宫。迷宫由通道和墙壁组成,每一步可以向邻接的上下左右四格的通道移动。请求出起点到终点所需的最小步数。(注:本题假定从起点一定可以移动到终点)

#include
#include
using namespace std;
typedef pair P;
const int INF= 100000000;
int n,m;
int si,sj,gi,gj;
char map[101][101];
int d[101][101];
int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};

int bfs()
{
     queue

q; q.push(P(si,sj)); d[si][sj]=0; while(!q.empty()) { P p = q.front(); q.pop(); if(p.first==gi&&p.second==gj) break; for(int i = 0;i<4;i++) { int nx = p.first+dir[i][0]; int ny = p.second+dir[i][1]; if(nx>=0&&nx=0&&ny>n>>m) { for(int i=0;i>map[i][j]; if(map[i][j]=='S') { si=i;sj=j; } if(map[i][j]=='G') { gi=i;gj=j; } } } cout<


你可能感兴趣的:(算法,-----------搜索)