zoj 1940 Dungeon Master
来源:互联网 发布:179端口 编辑:程序博客网 时间:2024/05/29 23:48
Description
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 Input
3 4 5
S....
.###.
.##..
###.#
#####
#####
##.##
##...
#####
#####
#.###
####E
1 3 3
S##
#E#
###
0 0 0
Sample Output
Escaped in 11 minute(s).
Trapped!
2014年第一道搜索题目,出了很多问题,这是一道3维基础广搜模板题目,记录一下。
#include <cstdio>#include<iostream>#include <queue>using namespace std;const int N = 85;char map[N][N][N]; //zhuyiint l,r,c;struct Node{ int x,y,z; int step;};int dir[8][4]={ {0,0,1}, {0,0,-1}, {0,1,0}, {0,-1,0}, {1,0,0}, {-1,0,0}};int Bfs(Node st,Node en){ queue<Node> q; Node tmd,tmp; q.push(st); while(!q.empty()) { tmd=q.front();q.pop(); //初始片段搜索结束条件的地方 if(tmd.x==en.x && tmd.y==en.y && tmd.z==en.z) return tmd.step; for(int i=0;i<6;i++) { tmp.x=tmd.x+dir[i][0]; tmp.y=tmd.y+dir[i][1]; tmp.z=tmd.z+dir[i][2]; tmp.step=tmd.step+1; if(map[tmp.x][tmp.y][tmp.z]!='#'&&tmp.x>=0 &&tmp.y>=0 && tmp.z>=0 &&tmp.x<l&&tmp.y<r&&tmp.z<c) { //注意上面的搜索条件,是!=‘#’ 错在了这里 q.push(tmp); map[tmp.x][tmp.y][tmp.z]='#'; } } } return -1;}int main(){ while(~scanf("%d%d%d",&l,&r,&c)) { if(l==0 && r==0 &&c==0) break; getchar(); Node st,en; for(int i=0;i<l;i++) { for(int j=0;j<r;j++) { for(int k=0;k<c;k++) { scanf("%c",&map[i][j][k]); if(map[i][j][k]=='S') { st.x=i; st.y=j; st.z=k;st.step=0; } if(map[i][j][k]=='E') { en.x=i,en.y=j,en.z=k; } } getchar(); } if(i!=l-1) getchar(); } // cout<<st.x<<st.y<<st.z<<en.x<<en.y<<en.z<<endl; int ans = Bfs(st,en); if(ans == -1){ printf("Trapped!\n"); }else { printf("Escaped in %d minute(s).\n",ans); }/* for(int i=0;i<l;i++) { for(int j=0;j<r;j++) { for(int k=0;k<c;k++) printf("%c ",map[i][j][k]); putchar('\n'); } putchar('\n'); }*/ } return 0;}
- ZOJ 1940 Dungeon Master
- ZOJ 1940 Dungeon Master
- zoj 1940 Dungeon Master
- zoj - 1940 - Dungeon Master
- zoj 1940 Dungeon Master
- zoj 1940 Dungeon Master
- ZOJ 1940 Dungeon Master
- ZOJ 1940 Dungeon Master
- ZOJ 1940 Dungeon Master
- zoj 1940 Dungeon Master
- ZOJ 1940 Dungeon Master 【BFS】
- zoj 1940 Dungeon Master(BFS)
- ZOJ 1940 Dungeon Master bfs
- zoj 1940 || poj 2251 Dungeon Master
- ZOJ Problem Set - 1940 Dungeon Master
- zoj 1940 || poj 2251 Dungeon Master(bfs)
- NYOJ 353 3D dungeon + zoj 1940 Dungeon Master
- ZOJ 1940 Dungeon Master (三维广搜)
- 《设计搜索体验:搜索的艺术与科学》
- android paddingLeft 和 layout_marginLeft的区别
- [MS SQL]Cursor实例讲解2-对某个DB中所有的表删除指定字段
- hdu 4196 Remoteland(数论,2种求逆模的方法)
- 关于数据库审计的简介
- zoj 1940 Dungeon Master
- javax.faces.FacesException: Exception while calling encodeEnd on component : {Component-Path : [Clas
- CodeForces Round 213 Div 2 E Sereja and Brackets 线段树
- 四线八拍步进电机(28BYJ48)Arduino 库stepper
- 多线程 or 多进程
- Linux定时器
- Cadstar格式导入功能
- iOS安全攻防(四):阻止GDB依附
- c# 保留2位小数