广度优先寻找迷宫!
2017-08-01 17:16
127 查看
#include<iostream> using namespace std; #include<stdio.h> #include<queue> const int INF=1000000000; typedef pair<int,int> P; char maze[105][105]; int d[105][105]; int n,m; int sx,sy; int gx,gy; int dx[4]={1,0,-1,0}; int dy[4]={0,-1,0,1}; int bfs() { queue<P> que; que.push(P(sx,sy));//插入第一个 for(int i=0;i<n;i++) { for(int j=0;j<m;j++)//要将距离矩阵做好 { d[i][j]=INF; } } d[sx][sy]=0; while(que.size()) { P p=que.front(); que.pop(); if(p.first==gx&&p.second==gy) break; for(int i=0;i<4;i++) { int nx=p.first+dx[i]; int ny=p.second+dy[i]; if(0<=nx&&nx<n&&0<=ny&&ny<m&&maze[nx][ny]!='#'&&d[nx][ny]==INF) { que.push(P(nx,ny)); d[nx][ny]=d[p.first][p.second]+1; } } } return d[gx][gy]; } int main() { char c; cin>>n>>m; sx=0; sy=3; gx=3; gy=0; scanf("%c",&c); for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { scanf("%c",&maze[i][j]); } scanf("%c",&c); } int res=bfs(); cout<<res<<endl; return 0; }
相关文章推荐
- (BFS)广度优先搜索例子:迷宫,寻找连块数
- 广度优先搜索--POJ迷宫问题
- 广度优先搜索例2--走迷宫问题
- 广度优先搜索-迷宫问题(算法基础 第8周)
- 广度优先搜索求解迷宫问题
- 用广度优先搜索解迷宫问题 By LYLtim
- 广度优先搜索BFS(迷宫问题)
- 广度优先搜索解决迷宫问题
- poj 3984 迷宫问题 (广度优先BFS)
- 广度优先搜索求解迷宫问题
- HDU/HDOJ 1242 Rescue 典型的迷宫广度优先搜索题
- 课程设计 广度优先探索—迷宫问题
- 用广度优先搜索解迷宫问题
- 广度优先搜索[再解迷宫]
- 迷宫问题(广度优先搜索BFS)
- C语言广度优先搜索之迷宫(队列)
- 迷宫最短路径的C++实现(队列:广度优先)
- 广度优先搜索:迷宫问题
- 深度优先和广度优先遍历迷宫
- 迷宫问题(广度优先)