POJ 2251 Dungeon Master
2013-06-16 15:22
267 查看
题目见此:http://poj.grids.cn/practice/2251/
解题思路:
一道BFS简单题,可以用来练手
唯一值得说一下的就是31,32行处不要写成x=i, y=j, z=k,因为i、z表示层数,j、x表示行数,k、y表示列数
贴代码:
View Code
解题思路:
一道BFS简单题,可以用来练手
唯一值得说一下的就是31,32行处不要写成x=i, y=j, z=k,因为i、z表示层数,j、x表示行数,k、y表示列数
贴代码:
#include <iostream> #include <queue> #include <string.h> using namespace std; bool b[32][32][32]; int r, c, l; int dx[6]={0, 0, 1, 0, 0, -1}, dy[6]={0, 1, 0, 0, -1, 0}, dz[6]={1, 0, 0, -1, 0, 0}; struct Node { int x, y, z, time; bool operator == (const Node& a) const { if(x == a.x && y == a.y && z == a.z) return 1; else return 0; } }p, q; int main() { while(cin >> l >> r >> c, r || c || l) { memset(b, 0, sizeof(b)); for(int i=1 ; i<=l ; i++) for(int j=1 ; j<=r ; j++) for(int k=1 ; k<=c ; k++) { char ch; cin >> ch; if(ch == 'S') {p.z = i, p.x = j, p.y = k, p.time = 0;} else if(ch == 'E') {q.z = i, q.x = j, q.y = k; b[i][j][k] = 1;} else if(ch == '.') b[i][j][k] = 1; } queue<Node> Q; Q.push(p); bool f = 0; while(!Q.empty()) { p = Q.front() ; Q.pop(); if(p == q) { f = 1; break; } Node now; now.time = p.time + 1; for(int k=0 ; k<6 ; k++) { now.x = p.x + dx[k], now.y = p.y + dy[k], now.z = p.z + dz[k]; if(b[now.z][now.x][now.y]) { Q.push(now); b[now.z][now.x][now.y] = 0; } } } if(f == 1) cout << "Escaped in " << p.time << " minute(s)." << endl; else cout << "Trapped!" << endl; } }
View Code
相关文章推荐
- poj 2251 Dungeon Master
- POJ 2251 Dungeon Master
- POJ 2251-Dungeon Master(BFS)
- POJ 2251 Dungeon Master
- POJ 2251 Dungeon Master
- POJ 2251 Dungeon Master --- 三维BFS(用BFS求最短路)
- POJ 2251 Dungeon Master
- POJ - 2251 Dungeon Master
- POJ-2251 (Dungeon Master)
- POJ2251 Dungeon Master
- Poj 2251 Dungeon Master
- poj 2251 Dungeon Master (BFS)
- POJ_2251 Dungeon Master
- poj 2251 Dungeon Master 题解(bfs广搜)
- Dungeon Master (POJ 2251)
- 【POJ 2251】Dungeon Master(BFS)
- POJ 2251 Dungeon Master(BFS最短路)
- POJ 2251 Dungeon Master (BFS)
- B_Dungeon Master(POJ_2251)
- poj 2251 Dungeon Master