1248:Dungeon Master

时间限制: 1000 ms         内存限制: 65536 KB
提交数: 10942     通过数: 4388

【题目描述】

这题是一个三维的迷宫题目,其中用‘.’表示空地,‘#’表示障碍物,‘S’表示起点,‘E’表示终点,求从起点到终点的最小移动次数,解法和二维的类似,只是在行动时除了东南西北移动外还多了上下。可以上下左右前后移动,每次都只能移到相邻的空位,每次需要花费一分钟,求从起点到终点最少要多久。

【输入】

多组测试数据。

一组测试测试数据表示一个三维迷宫:

前三个数,分别表示层数、一个面的长和宽,后面是每层的平面图。前三个数据为三个零表示结束。

【输出】

最小移动次数。

【输入样例】

3 4 5
S....
.###.
.##..
###.#
#####
#####
##.##
##...
#####
#####
#.###
####E
1 3 3
S##
#E#
###
0 0 0

【输出样例】

Escaped in 11 minute(s).
Trapped!

【提示】

对于题目给出数据的含义就是输入l,r,c,分别代表迷宫有l层,每层长宽分别是c,r。对于数据以可以这样移动:

(1,1,1)->(1,1,2)->(1,1,3)->(1,1,4)->(1,1,5)->(1,2,5)->

(1,3,5)->(1,3,4)->(1,4,4)->(2,4,4)->(2,4,5)->(3,4,,5)

共11步就可以到达终点 对于数据二明显不能到达,则输出Trapped!

这题用BFS解,每次去队首元素,如果是终点则输出结果移动的次数,否则,从该点开始分别向东南西北上下移动(如果可以走的话)并继续搜,如果到队列为空还没搜到解法,则说明无解。

P2360 地下城主

提交5.22k

通过1.67k

时间限制1.00s

内存限制125.00MB

提交答案加入题单

复制题目

题目提供者NIatraucthoi

难度普及-

历史分数100

提交记录  查看题解

标签

查看算法标签

进入讨论版

相关讨论

查看讨论

推荐题目

查看推荐

洛谷推荐关闭

展开

题目描述

你参加了一项秘密任务,在任务过程中你被困在了一个3D的地下监狱里面,任务是计时的,你现在需要在最短的时间里面从地牢里面逃出来继续你的任务。地牢由若干层组成,每一层的形状都是长宽一样的矩形,地牢被分成了若干小格,当小格没有被岩石所占据时,你可以前往所在小格的前方,后方,左方,右方,上层,下层的小格。每走一小格花费一分钟时间。

你能不能顺利的从地牢里面逃出来呢?如果可以,那所需要的最短时间又是多少呢?

//据说出口藏有神器。

输入格式

第一行输入L R C(L为地牢的层数,R为每层小格的行数,C为每层小格的列数,其中1<=L,R,C<=30)。

第二行开始输入L层地牢的格局,每一层有R行,每行有C个小格,两层地牢中间有空行隔开。

输入的文件中,“S”代表你的起始点,“E”代表你所要到达的出口,“#”为小格被岩石占据,“.”表示没有被岩石占据。

输出格式

输出包含一行,当你可以顺利到达出口时请输出:

“Escaped in x minute(s).”,x代表你所花费的最短时间;

否则请输出:“Trapped!”。

输入输出样例

输入 #1复制

3 4 5
S....
.###.
.##..
###.######
#####
##.##
##...#####
#####
#.###
####E

输出 #1复制

Escaped in 11 minute(s).

说明/提示

来源:POJ 2251

【AC代码】

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+30000;
const int M=50;
const int INF=0x3f3f3f3f;
inline int read()
{char ch=getchar();int n=0,m=1;while(ch<'0'||ch>'9'){if(ch=='-')m=-1;ch=getchar();}while(ch>='0'&&ch<='9')n=(n<<3)+(n<<1)+ch-48,ch=getchar();return n*m;
}
void write(int n)
{if(n>9)write(n/10);putchar(n%10+'0');
}
int dir[6][3]={{1,0,0},{-1,0,0},{0,-1,0},{0,1,0},{0,0,-1},{0,0,1}},head=1,tail,sx,sy,sz,h,r,c;
struct point
{int px,py,pz,pt;
}q[N];
char m[M][M][M];
bool vis[M][M][M];
void bfs(int tx,int ty,int tz,int tt)
{vis[tx][ty][tz]=1;q[++tail].px=tx,q[tail].py=ty,q[tail].pz=tz,q[tail].pt=tt;while(head<=tail){point p=q[head];head++;if(m[p.px][p.py][p.pz]=='E'){cout<<"Escaped in "<<p.pt<<" minute(s).\n";return;}for(int i=0;i<6;i++){int nx=p.px+dir[i][0],ny=p.py+dir[i][1],nz=p.pz+dir[i][2];if(nx>0&&nx<=h&&ny>0&&ny<=r&&nz>0&&nz<=c&&m[nx][ny][nz]!='#'&&vis[nx][ny][nz]==0)vis[nx][ny][nz]=1,q[++tail].px=nx,q[tail].py=ny,q[tail].pz=nz,q[tail].pt=p.pt+1;}}cout<<"Trapped!\n";
}
int main(int argc,char **argv)
{while(cin>>h>>r>>c&&h*r*c!=0){memset(vis,0,sizeof vis);memset(m,'\0',sizeof m);head=1,tail=0;for(int i=1;i<=h;i++){for(int j=1;j<=r;j++){for(int k=1;k<=c;k++){cin>>m[i][j][k];if(m[i][j][k]=='S')sx=i,sy=j,sz=k;}}}bfs(sx,sy,sz,0);}return 0;
}

1248:Dungeon Master/P2360 地下城主相关推荐

  1. Dungeon Master(地下城主)

    测题链接 题意:给出a,b,c,表示一个三维的一个地牢,起始点'S',终点'E',若能成功逃出,输出最小步数,否则输出Trapped..被陷入困境,六个方向可以移动,分别是东南西北上下,'#'表示石头 ...

  2. P2360 地下城主

    题目 你参加了一项秘密任务,在任务过程中你被困在了一个3D的地下监狱里面,任务是计时的,你现在需要在最短的时间里面从地牢里面逃出来继续你的任务.地牢由若干层组成,每一层的形状都是长宽一样的矩形,地牢被 ...

  3. 信息学奥赛一本通 1248:Dungeon Master | OpenJudge NOI 2.5 1253:Dungeon Master

    [题目链接] ybt 1248:Dungeon Master OpenJudge NOI 2.5 1253:Dungeon Master [题目翻译] 地牢城主 描述 你被困在一个3D地牢中,需要找到 ...

  4. 信息学奥赛一本通(1248:Dungeon Master)

    1248:Dungeon Master 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 8637     通过数: 3432 [题目描述] 这题是一个三维的迷宫题目 ...

  5. Dungeon Master(地牢大师、底下城主)三维bfs

    1253:Dungeon Master(地牢大师.底下城主) 要敢于变通 和普通bfs的区别,仅仅在于数组开三维+搜索方向多了上下(现在的搜索方向是 上下东南西北) bfs多组输入要记得清空队列 // ...

  6. 1248:Dungeon Master

    1248:Dungeon Master 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 11012     通过数: 4403 [题目描述] 这题是一个三维的迷宫题 ...

  7. B - Dungeon Master POJ - 2251

    B - Dungeon Master POJ - 2251 题目: 逃离3D迷宫,n <=30 首先是dfs,算一下最坏情况共30层,每层有30*30的循环, 复杂度 3030*30 显然严重爆 ...

  8. POJ 2251 Dungeon Master(三维BFS求最短路径)

    3D dungeon 时间限制: 1 Sec  内存限制: 128 MB 提交: 2  解决: 2 [提交][状态][讨论版][命题人:201506020829][Edit] [TestData] 题 ...

  9. Dungeon Master 地下城大师(BFS进阶)

    题目链接:2251 -- Dungeon Master 知道你看不懂题(手动滑稽):友情链接. 题意:找到从S到E的最少步数的路径,输出该步数,不过有意思的是这个类似迷宫问题不是二维的,是一个三维迷宫 ...

最新文章

  1. ext2.2打造全新功能grid系列--仅仅动态生成GridPanel
  2. 魅族16Android版本,丝滑流畅?魅族16即将适配MIUI10/安卓9系统
  3. Vue.js的计算属性
  4. 推行CMMI能在哪些方面为软件企业带来好处?
  5. 机器学习实现计算不规则图形面积_【名师课堂】苏教数学五年级上2.11校园绿地面积...
  6. c语言数字钟课程设计报告,c语言实现电子时钟_课程设计.doc
  7. 《手机屏幕》参数与选择
  8. 详解Haar特征与AdaBoost方法原理
  9. PHP实现图片转字符画
  10. “钱妈妈”平台犯罪嫌疑人被抓捕 涉嫌非法吸收公众存款
  11. C语言中u8 u16 u32含义,有关stm32的问题,程序里面的u8、u16这些是什么意思啊
  12. 量化交易入门阶段——MACD的背离用法(一)——DIFF背离
  13. 分区丢失了数据怎么恢复
  14. Varian OBI几个奇葩之处
  15. MySQL--eq_range_index_dive_limit参数学习
  16. 广东计算机考试只能在学校报名吗,广东省计算机等级考试报名考点名单
  17. Video标签上面覆盖播放按钮点击播放
  18. Mysql 使用企业级MEB进行数据库物理备份与恢复
  19. Java图形化界面---进度条
  20. 叮叮获取所有用户信息_钉钉如何获取员工位置?

热门文章

  1. 细粒度论文笔记:双线性模型 《Bilinear CNN Models for Fine-Grained Visual Recognition》
  2. IT网络建站公司pbootcms模板互联网营销企业网站源码
  3. java WEB调用秒嘀科技短信验证接口(实现短信验证登录)
  4. unity 层次包围盒 AABB树
  5. 3 交换机的端口聚合配置
  6. 六、SAR(合成孔径雷达)数据样本标注
  7. 【Egg】静态资源及缓存设置
  8. BUCK电路全部外围参数计算公式
  9. 垃圾回收之垃圾回收算法(标记清除、标记整理、复制)、分代垃圾回收
  10. java按钮点击事件监听_按钮事件监听