poj 2251 搜索
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 13923 | Accepted: 5424 |
Description
Is an escape possible? If yes, how long will it take?
Input
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
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!
这道题最坑人的地方在于poj上将他分类为dfs,结果一写就超时,其实写最短路一般肯定是bfs,哎,经验还是太浅了。
这道题还有一个值得注意的地方就是这是个3维的迷宫,只需要加上上下两个方向就行了,其他的就是简单的bfs。
这道题wa了半天,居然是我忘记把文件输入输出那句话给删了,尼玛!
下面是代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#define pan(a,b,c) (a<=b&&b<=c)
using namespace std; int dir[6][3]={{0,0,-1},{0,0,1},{-1,0,0},{1,0,0},{0,-1,0},{0,1,0}};
char map[35][35][35];
int vis[35][35][35];
int t,m,n,flag;
struct node{
int x,y,z;
int num;
}que[30010]; void bfs(int sx,int sy,int sz){
int head=0;
int tail=1;
que[0].x=sx;
que[0].y=sy;
que[0].z=sz;
que[0].num=0;
vis[sx][sy][sz]=1;
flag=0;
int xx,yy,zz;
while(head<tail){
for(int i=0;i<6;i++){
xx=que[head].x+dir[i][0];
yy=que[head].y+dir[i][1];
zz=que[head].z+dir[i][2];
if(map[xx][yy][zz]=='E'){//搜到终点
printf("Escaped in %d minute(s).\n",que[head].num+1);
flag=1;
break;
}
if(pan(1,xx,t)&&pan(1,yy,m)&&pan(1,zz,n)&&vis[xx][yy][zz]==0&&map[xx][yy][zz]=='.'){//如果在迷宫内,并且未走过
que[tail].x=xx;
que[tail].y=yy;
que[tail].z=zz;
que[tail].num=que[head].num+1;
vis[xx][yy][zz]=1;
tail++;
}
}
if(flag)
break;
head++;//flag不为1,那就要在继续往后走
}
if(!flag)
cout<<"Trapped!"<<endl;
} int main(){
//freopen("input.txt","r",stdin);
//freopen("output.txt","w",stdout);
int i,j,k;
int sx,sy,sz;
while(scanf("%d%d%d",&t,&m,&n)!=EOF){
if(t==0&&m==0&&n==0) break;
for(i=1;i<=t;i++)
for(j=1;j<=m;j++)
for(k=1;k<=n;k++){
cin>>map[i][j][k];
if(map[i][j][k]=='S'){//找到起点
sx=i;
sy=j;
sz=k;
}
}
memset(vis,0,sizeof(vis));
bfs(sx,sy,sz);
}
return 0;
}
poj 2251 搜索的更多相关文章
- Dungeon Master POJ - 2251 (搜索)
Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 48605 Accepted: 18339 ...
- POJ 2251 Dungeon Master /UVA 532 Dungeon Master / ZOJ 1940 Dungeon Master(广度优先搜索)
POJ 2251 Dungeon Master /UVA 532 Dungeon Master / ZOJ 1940 Dungeon Master(广度优先搜索) Description You ar ...
- POJ 2251 Dungeon Master --- 三维BFS(用BFS求最短路)
POJ 2251 题目大意: 给出一三维空间的地牢,要求求出由字符'S'到字符'E'的最短路径,移动方向可以是上,下,左,右,前,后,六个方向,每移动一次就耗费一分钟,要求输出最快的走出时间.不同L层 ...
- BFS POJ 2251 Dungeon Master
题目传送门 /* BFS:这题很有意思,像是地下城,图是立体的,可以从上张图到下一张图的对应位置,那么也就是三维搜索,多了z坐标轴 */ #include <cstdio> #includ ...
- 【BFS】POJ 2251
POJ 2251 Dungeon Master 题意:有一个地图,三维,走的方向是上下,左右,前后.问你最小步数从起始点走到出口. 思路:三维的BFS,就是多加一组状态,需要细心(不细心如我就找了半个 ...
- POJ 2251 Dungeon Master(地牢大师)
p.MsoNormal { margin-bottom: 10.0000pt; font-family: Tahoma; font-size: 11.0000pt } h1 { margin-top: ...
- 【POJ 2251】Dungeon Master(bfs)
BUPT2017 wintertraining(16) #5 B POJ - 2251 题意 3维的地图,求从S到E的最短路径长度 题解 bfs 代码 #include <cstdio> ...
- POJ.2251 Dungeon Master (三维BFS)
POJ.2251 Dungeon Master (三维BFS) 题意分析 你被困在一个3D地牢中且继续寻找最短路径逃生.地牢由立方体单位构成,立方体中不定会充满岩石.向上下前后左右移动一个单位需要一分 ...
- catch that cow POJ 3278 搜索
catch that cow POJ 3278 搜索 题意 原题链接 john想要抓到那只牛,John和牛的位置在数轴上表示为n和k,john有三种移动方式:1. 向前移动一个单位,2. 向后移动一个 ...
随机推荐
- 隐马尔科夫模型,第三种问题解法,维比特算法(biterbi) algorithm python代码
上篇介绍了隐马尔科夫模型 本文给出关于问题3解决方法,并给出一个例子的python代码 回顾上文,问题3是什么, 下面给出,维比特算法(biterbi) algorithm 下面通过一个具体例子,来说 ...
- OAF与Windows 7版本不兼容黑屏卡顿问题
OAF版本比较原始,在Window7中无法应用配色方案,导致黑屏卡顿问题.(在启动OC4J后,Window7的配色方案还是会还原至原始状态) 修改$JDEV_HOME/jdev/bin/jdev.co ...
- APIO2010特别行动队(单调队列、斜率优化)
其实这题一看知道应该是DP,再一看数据范围肯定就是单调队列了. 不过我还不太懂神马单调队列.斜率优化…… 附上天牛的题解:http://www.cnblogs.com/neverforget/arch ...
- Spring编程风格
给自己使用的无需定义接口:即一个模块内部的都是封装的,定义接口并不会得到很多好处,变过几次实现?? “优先面向接口编程,而非实现” 不是必须,是优先: 给朋友(第三方)使用的定义接口:即要公开的功能, ...
- 【转】 Android 开发 之 JNI入门 - NDK从入门到精通
原文网址:http://blog.csdn.net/shulianghan/article/details/18964835 NDK项目源码地址 : -- 第一个JNI示例程序下载 : GitHub ...
- 微信公众平台开发—利用OAuth2.0获取微信用户基本信息
在借鉴前两篇获取微信用户基本信息的基础下,本人也总结整理了一些个人笔记:如何通过OAuth2.0获取微信用户信息 1.首先在某微信平台下配置OAuth2.0授权回调页面: 2.通过appid构造url ...
- 提示35. 怎样实现OfTypeOnly<TEntity>()这样的写法
提示35. 怎样实现OfTypeOnly<TEntity>()这样的写法 如果你编写这样LINQ to Entities查询: 1 var results = from c in ctx. ...
- 使用CSS3美化复选框checkbox
我们知道HTML默认的复选框样式十分简陋,而以图片代替复选框的美化方式会给页面表单的处理带来麻烦,那么本文将结合实例带您一起了解一下使用CSS3将复选框checkbox进行样式美化,并且带上超酷的滑动 ...
- Collection Of SVM Libraries By Language via datasciencecentral
http://www.datasciencecentral.com/profiles/blogs/collection-of-svm-libraries-by-language Support vec ...
- ArcGIS 读写lyr层文件
原文arcengine C# 读写lyr(转) 写lyr IFeatureLayer LineLayer = axMapControl1.get_Layer() as IFeatureLayer; I ...