迷宫的最短路径(bfs)
2018-03-28 20:08
281 查看
题意:给定一个大小为n*m的迷宫。迷宫由通道和墙壁组成,每一步可以向邻接的上下左右四格的通道移动。请求出起点到终点所需的最小步数。(注:本题假定从起点一定可以移动到终点)#include<iostream>
#include<queue>
using namespace std;
typedef pair<int,int> 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<P> 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<n&&ny>=0&&ny<m&&map[nx][ny]!='#'&&d[nx][ny]==INF)
{
q.push(P(nx,ny));
d[nx][ny] = d[p.first][p.second] + 1;
}
}
}
return d[gi][gj];
}
int main()
{
while(cin>>n>>m)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
d[i][j]=INF;
cin>>map[i][j];
if(map[i][j]=='S')
{
si=i;sj=j;
}
if(map[i][j]=='G')
{
gi=i;gj=j;
}
}
}
cout<<bfs()<<endl;
}
return 0;
}
#include<queue>
using namespace std;
typedef pair<int,int> 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<P> 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<n&&ny>=0&&ny<m&&map[nx][ny]!='#'&&d[nx][ny]==INF)
{
q.push(P(nx,ny));
d[nx][ny] = d[p.first][p.second] + 1;
}
}
}
return d[gi][gj];
}
int main()
{
while(cin>>n>>m)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
d[i][j]=INF;
cin>>map[i][j];
if(map[i][j]=='S')
{
si=i;sj=j;
}
if(map[i][j]=='G')
{
gi=i;gj=j;
}
}
}
cout<<bfs()<<endl;
}
return 0;
}
相关文章推荐
- POJ 3984 迷宫问题【迷宫最短路径 bfs】
- BFS求解迷宫最短路径
- poj 3984迷宫问题(bfs求最短路径 类似并查集保存上个节点 保存最短路径)
- 迷宫的最短路径 (BFS)
- hdu4230 Robot Navigation 迷宫最短路径的条数 BFS 很霸气!!!!!
- 迷宫最短路径(bfs)
- hdu1728逃离迷宫 (利用最短路径思想+优先队列(BFS))
- 重学搜索yi.3:迷宫的最短路径--bfs
- 题目1335:闯迷宫( BFS在求解最短路径或者最短步数上有很多的应用)
- 迷宫的最短路径 -- BFS
- POJ-3984迷宫问题(典型BFS找最短路径)
- 迷宫的最短路径 bfs
- BFS 迷宫的最短路径
- POJ 3322 Bloxorz I(BFS:求迷宫最短路径)
- bfs之迷宫最短路径
- BFS 迷宫的最短路径
- bfs_迷宫求最短路径
- 迷宫的最短路径(BFS的简单应用)
- zoj1649-Rescue (迷宫最短路径)【bfs 优先队列】
- BFS 迷宫的最短路径问题