迷宫最短路径问题
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<queue>
using namespace std;
#define INF 100000000
#define maxn 200
typedef pair<int,int>P;//储存两个数据
char map[maxn][maxn];
int n,m;
int sx,sy,gx,gy;
int d[maxn][maxn];
int dx[4]={1,0,-1,0},dy[4]={0,1,0,1};
int bfs()
{
queue<P>que;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
d[i][j]=INF; //所有位置都设成INF
que.push(P(sx,sy));
d[sx][sy]=0;
while(que.size())
{
P p=que.front();que.pop();
if(p.first==gx&&p.second==sy)
break;
for(int i=0;i<4;i++)
{
int nx=p.first+dx[i],ny=p.first+dy[i];
if(nx>=0&&nx<n&&ny>=0&&ny<m&&d[nx][ny]==INF&&map[nx][ny]!='#')
{
que.push(P(nx,ny));
d[nx][ny]=d[p.first][p.second]+1;
}
}
}
return d[gx][gy];
}