[kuangbin带你飞]专题一 简单搜索-B
来源:互联网 发布:淘抢购在淘宝首页哪里 编辑:程序博客网 时间:2024/06/05 21:36
You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed of unit cubes which may or may not be filled with rock. It takes one minute to move one unit north, south, east, west, up or down. You cannot move diagonally and the maze is surrounded by solid rock on all sides.
Is an escape possible? If yes, how long will it take?
Input
The input consists of a number of dungeons. Each dungeon description starts with a line containing three integers L, R and C (all limited to 30 in size).
L is the number of levels making up the dungeon.
R and C are the number of rows and columns making up the plan of each level.
Then there will follow L blocks of R lines each containing C characters. Each character describes one cell of the dungeon. A cell full of rock is indicated by a ‘#’ and empty cells are represented by a ‘.’. Your starting position is indicated by ‘S’ and the exit by the letter ‘E’. There’s a single blank line after each level. Input is terminated by three zeroes for L, R and C.
Output
Each maze generates one line of output. If it is possible to reach the exit, print a line of the form
Escaped in x minute(s).
where x is replaced by the shortest time it takes to escape.
If it is not possible to escape, print the line
Trapped!
Sample Input3 4 5S.....###..##..###.#############.####...###########.#######E1 3 3S###E####0 0 0Sample OutputEscaped in 11 minute(s).Trapped!
ac代码,这题其实就是一个简单的三维广度优先搜索算法
#include"iostream"#include"string.h"#include"queue"using namespace std;int high,cur,lie;char ai[100][100][100];bool sign[100][100][100];int fx[][3]={0,0,1,0,0,-1,0,1,0,0,-1,0,1,0,0,-1,0,0};struct node{ int x,y,z; int step;};node qi,zhou;bool check(int a,int b,int c){ if(a>=0&&a<high&&b>=0&&b<cur&&c>=0&&c<lie&&ai[a][b][c]!='#'&&!sign[a][b][c]) return true; return false;} void bfs(){ node mm,nn; sign[qi.x][qi.y][qi.z]=true; queue<node> jj; jj.push(qi); while(!jj.empty()) { mm=jj.front(); jj.pop(); if(mm.x==zhou.x&&mm.y==zhou.y&&mm.z==zhou.z) { cout<<"Escaped in "<<mm.step<<" minute(s)."<<endl; return ; } for(int i=0;i<6;i++) { nn=mm; nn.x+=fx[i][0]; nn.y+=fx[i][1]; nn.z+=fx[i][2]; if(check(nn.x,nn.y,nn.z)) { //cout<<nn.x<<" "<<nn.y<<" "<<nn.z<<endl; sign[nn.x][nn.y][nn.z]=true; nn.step++; jj.push(nn); } } } cout<<"Trapped!"<<endl;} int main(){ while(cin>>high>>cur>>lie) { if(high==0&&cur==0&&lie==0) break; memset(sign,false,sizeof(sign)); for(int i=0;i<high;i++) { for(int j=0;j<cur;j++) { cin>>ai[i][j]; for(int k=0;k<lie;k++) { if(ai[i][j][k]=='S') { qi.x=i; qi.y=j; qi.z=k; qi.step=0; } else if(ai[i][j][k]=='E') { zhou.x=i; zhou.y=j; zhou.z=k; } } } } bfs(); } return 0;}
- [kuangbin带你飞]专题一 简单搜索 B POJ2251
- [kuangbin带你飞]专题一 简单搜索 B
- [kuangbin带你飞]专题一 简单搜索-B
- 2251&[kuangbin带你飞]专题一 简单搜索 B
- [kuangbin带你飞]专题一 简单搜索 B
- [kuangbin带你飞]专题1 简单搜索 B
- kuangbin带你飞专题一(搜索)B
- [kuangbin带你飞]专题一 简单搜索 B - Dungeon Master(POJ 2251)
- [kuangbin带你飞]专题一 简单搜索 B - Dungeon Master poj2251
- [kuangbin带你飞]专题一 简单搜索->B - Dungeon Master
- [kuangbin带你飞]专题一 简单搜索 - B - Dungeon Master
- [kuangbin神带你飞]专题一 简单搜索
- kuangbin带你飞 专题一 简单搜索 (题解)
- Fire Game [kuangbin带你飞]专题一 简单搜索
- [kuangbin带你飞]专题一 简单搜索 总结
- Kuangbin带你飞专题一 简单搜索
- [kuangbin带你飞]专题一 简单搜索 D - Fliptile
- [kuangbin带你飞]专题一 简单搜索-J - Fire!
- thinkphp实现图片裁剪并生成圆形图片整合
- hosts文件更新与gmail访问解决方案
- 浅谈高内聚低耦合
- 欢迎使用CSDN-markdown编辑器
- Linux--RH124---unit 13 软件安装
- [kuangbin带你飞]专题一 简单搜索-B
- RHEL-第十二单元练习题
- An ffmpeg and SDL Tutorial 00
- MVC思维
- Java多线程并发编程:volatile关键字解析
- RBAC权限管理与用户操作日志
- oracle中格式化代码的快捷键
- 25个不错PHP的游戏编程脚本代码分享
- 关于SimpleDateFormat时间转换总是显示1970年的问题