首页 > 代码库 > [kuangbin带你飞]专题一 简单搜索 - B - Dungeon Master
[kuangbin带你飞]专题一 简单搜索 - B - Dungeon Master
1 #include<iostream> 2 #include<cstdio> 3 #include<string> 4 #include<vector> 5 #include<queue> 6 #include<cstring> 7 using namespace std; 8 struct node 9 {10 int x;11 int y;12 int z;13 int step;14 };15 char dung[35][35][35];16 int d[6][3] = {{0,0,1},{0,0,-1},{0,1,0},{0,-1,0},{1,0,0},{-1,0,0}};17 int l, r, c;18 int main()19 {20 // freopen("in.in","r",stdin);21 char tp[40];22 node start, tmp;23 int ans = 0;24 queue<node>q;25 while(cin>>l>>r>>c)26 {27 ans = 0;28 memset(dung,0,sizeof(dung));29 if(l*r*c == 0) break;30 for(int k = 1; k <= l; k++)31 for(int i = 1; i <= r; i++)32 {33 cin>>tp;34 for(int j = 1; j <= c; j++)35 {36 dung[k][i][j] = tp[j-1];37 if(tp[j-1]==‘S‘)38 {39 start.x = i;40 start.y = j;41 start.z = k;42 start.step = 0;43 }44 }45 }46 q.push(start);47 dung[start.z][start.x][start.y] = ‘#‘;48 while(q.size())49 {50 start = q.front();51 q.pop();52 for(int i = 0; i < 6; i++)53 {54 tmp.x = start.x + d[i][0];55 tmp.y = start.y + d[i][1];56 tmp.z = start.z + d[i][2];57 tmp.step = start.step + 1;58 if(dung[tmp.z][tmp.x][tmp.y] == ‘E‘)59 {60 ans = tmp.step;61 break;62 }63 if(dung[tmp.z][tmp.x][tmp.y]!=‘.‘) continue;64 q.push(tmp);65 dung[tmp.z][tmp.x][tmp.y] = ‘#‘;66 }67 }68 if(ans) printf("Escaped in %d minute(s).\n",ans);69 else printf("Trapped!\n");70 while(q.size()) q.pop();71 }72 return 0;73 }
[kuangbin带你飞]专题一 简单搜索 - B - Dungeon Master
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。