【POJ】2251-Dungeon Master BFS、三维迷宫
2018-02-27 21:13
459 查看
http://poj.org/problem?id=2251
从S点到E点最近的距离,不过是三位。
三维迷宫需要六个方向,并且在坐标处理上不用复杂化。
从S点到E点最近的距离,不过是三位。
三维迷宫需要六个方向,并且在坐标处理上不用复杂化。
#include <iostream> #include <cstring> #include <queue> using namespace std; const int maxn=100; string G[maxn][maxn]; bool vis[maxn][maxn][maxn]; int h,n,m; int dx[6]={0,0,0,0,1,-1}; int dy[6]={0,0,1,-1,0,0}; int dz[6]={1,-1,0,0,0,0}; struct Node{ int x,y,z; int t; }; Node Begin,End; int BFS(){ queue <Node> q; q.push(Begin); while (!q.empty()){ Node Now=q.front(); q.pop(); if (Now.x==End.x&&Now.y==End.y&&Now.z==End.z){ return Now.t; } for (int i=0;i<6;i++){ Node Tmp; Tmp.x=Now.x+dx[i]; Tmp.y=Now.y+dy[i]; Tmp.z=Now.z+dz[i]; Tmp.t=Now.t+1; if (Tmp.x>=0&&Tmp.x<h&&Tmp.y>=0&&Tmp.y<n&&Tmp.z>=0&&Tmp.z<m&&!vis[Tmp.x][Tmp.y][Tmp.z]&&G[Tmp.x][Tmp.y][Tmp.z]!='#'){ vis[Tmp.x][Tmp.y][Tmp.z]=1; q.push(Tmp); } } } return -1; } int main(){ while (cin >> h >> n >> m){ if (h==0&&n==0&&m==0){ return 0; } for 4000 (int i=0;i<h;i++){ for (int j=0;j<n;j++){ cin >> G[i][j]; for (int k=0;k<m;k++){ if (G[i][j][k]=='S'){ Begin.x=i; Begin.y=j; Begin.z=k; Begin.t=0; } if (G[i][j][k]=='E'){ End.x=i; End.y=j; End.z=k; End.t=0; } } } } memset(vis,false,sizeof(vis)); int ans=BFS(); if (ans==-1){ cout << "Trapped!" << endl; } else{ cout << "Escaped in " << ans << " minute(s)." << endl; } } }
相关文章推荐
- poj2251 Dungeon Master (三维迷宫) bfs广搜 简单题
- POJ 2251-Dungeon Master(BFS-三维迷宫)
- POJ 2251 Dungeon Master (三维迷宫 BFS)
- POJ-2251-Dungeon Master【BFS】【三维迷宫问题】
- POJ 2251 Dungeon Master 比较有趣的三维迷宫bfs搜索路径
- 2道裸BFS(POJ 3278 Catch That Cow / POJ 2251 Dungeon Master)
- zoj 1940 || poj 2251 Dungeon Master(bfs)
- POJ 2251 Dungeon Master(BFS)
- poj 2251 Dungeon Master (bfs)
- POJ - 2251 - Dungeon Master (简单BFS)
- BFS_poj 2251 Dungeon Master
- POJ-2251-Dungeon Master(BFS)
- POJ 2251 Dungeon Master(bfs)
- POJ2251 Dungeon Master(3D迷宫 bfs)
- POJ 2251 Dungeon Master(BFS)
- POJ - 2251 Dungeon Master(BFS)
- POJ2251 Dungeon Master(bfs)
- POJ 2251 Dungeon Master(bfs)
- POJ - 2251 Dungeon Master(BFS)
- poj 2251 Dungeon Master(三维BFS)(中等)