POJ 2251 Dungeon Master BFS
题目链接:http://poj.org/problem?id=2251
这道题坑爹的地方在于。。。我很悲剧的一个变量写错了~
View Code
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; char map[35][35][35]; int pro[35][35][35]; int fro,re; struct node { int l,r,c,step; }q[100005],v; int main() { int r,l,c,i,j,k,leap,ii,jj,num; while(scanf("%d %d %d",&l,&r,&c)&& l||r||c) { leap = 1; memset(map,0,sizeof(map)); memset(pro,0,sizeof(pro)); for(i = 0;i < l;i++) { getchar(); for(j = 0;j < r;j++) gets(map[i][j]); } for(i = 0;i < l;i++) { for(j = 0;j < r;j++) { for(k = 0;k < c;k++) if(map[i][j][k] == 'S') { leap = 0; break; } if(!leap) break; } if(!leap) break; } fro = 0; re = 0; q[re].l = i; q[re].r = j; q[re].c = k; q[re].step = 0; re++; pro[i][j][k] = 1; leap =1; while(fro < re) { v = q[fro]; num = v.step; fro++; for(j = 0;j < 6;j++) { if(j == 0) ii = v.l+1,jj = v.r,k = v.c; if(j == 1) ii = v.l-1,jj = v.r,k = v.c; if(j == 2) ii = v.l,jj = v.r+1,k = v.c; if(j == 3) ii = v.l,jj = v.r-1,k = v.c; if(j == 4) ii = v.l,jj = v.r,k = v.c+1; if(j == 5) ii = v.l,jj = v.r,k = v.c-1; if(ii >= 0&&jj >= 0 && k >= 0 &&ii < l&&jj < r && k < c) { if(map[ii][jj][k] != '#' && pro[ii][jj][k] != 1) { q[re].l = ii; q[re].r = jj; q[re].c = k; q[re].step = num+1; if(map[ii][jj][k] == 'E') { leap = 0; break; } pro[ii][jj][k] = 1; re++; } } } if(!leap) break; } if(!leap) printf("Escaped in %d minute(s).\n",q[re].step); else puts("Trapped!"); } return 0; }