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

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

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

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

否则请输出:“Trapped!”。

大体思路

最短路径问题bfs,注意三维坐标的走向

代码:


#include <bits/stdc++.h>
using namespace std;
int l,r,c;
typedef pair<int,int> PII;
char a[35][35][35];
int vis[35][35][35];
int dis[35][35][35];int dx[]={0,0,0,0,1,-1};
int dy[]={0,0,1,-1,0,0};
int dz[]={1,-1,0,0,0,0};struct PIII
{int x,y,z;
};void bfs(int x,int y,int z)
{queue <PIII> q;q.push({x,y,z});vis[x][y][z]=1;dis[x][y][z]=0;while(!q.empty()){PIII t=q.front();q.pop();int nx=t.x,ny=t.y,nz=t.z;if(a[nx][ny][nz]=='E') {cout<<"Escaped in "<<dis[nx][ny][nz]<<" minute(s).";return;}for(int i=0;i<6;i++){int tx=nx+dx[i];int ty=ny+dy[i];int tz=nz+dz[i];//出界问题注意if(tx<0||tx>=l||ty<0||ty>=r||tz<0||tz>=c) continue;if(vis[tx][ty][tz]) continue;//标记if(a[tx][ty][tz]=='#') continue;//障碍物q.push({tx,ty,tz}) ;vis[tx][ty][tz]=1;dis[tx][ty][tz]=dis[nx][ny][nz]+1;}}cout<<"Trapped!"<<endl;}
int main()
{cin>>l>>r>>c;for(int i=0;i<l;i++){for(int j=0;j<r;j++) cin>>a[i][j];}for(int i=0;i<l;i++){for(int j=0;j<r;j++){for(int z=0;z<c;z++)if(a[i][j][z]=='S') bfs(i,j,z);}}return 0;
}

P2360 地下城主相关推荐

  1. 1248:Dungeon Master/P2360 地下城主

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

  2. Dungeon Master(地下城主)

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

  3. 新一代MMO架构(Next Generation MMO Architecture 翻译)

    http://blog.chinaunix.net/uid-429659-id-3396370.html 新一代MMO架构 原文件Pdf下载: Next_Generation_MMO_Architec ...

  4. 黑客,计算机革命的英雄!

    <黑客(计算机革命的英雄)(二十五周年新版)>前言(BySteven Levy) 我写<黑客(计算机革命的英雄)>(Hackers: Heroes of the Compute ...

  5. java 小程序 自己学习

    下面你们会看到 120 多个个项目构思,我将其根据主题分成了10 个分类,但有些项目其实涵盖了不止一个主题. 文本操作 逆转字符串--输入一个字符串,将其逆转并输出. 拉丁猪文字游戏--这是一个英语语 ...

  6. [转]程序员练手小项目

    文本操作 逆转字符串--输入一个字符串,将其逆转并输出.拉丁猪文字游戏--这是一个英语语言游戏.基本规则是将一个英语单词的第一个辅音音素的字母移动到词尾并且加上后缀-ay(譬如"banana ...

  7. 每个程序员都可以入手的小项目创意大集合

    我经常看有人发帖问关于软件项目创意点子的事,也看到了很多回帖,我自己也回了一些常见的软件项目创意.不过我觉得只列出三两个是远远不够的,因此就收集并这个软件项目创意列表,大家要找简单的编程软件项目创意学 ...

  8. 程序员不愁没练手的小项目

    文本操作 • 逆转字符串--输入一个字符串,将其逆转并输出. • 拉丁猪文字游戏--这是一个英语语言游戏.基本规则是将一个英语单词的第一个辅音音素的字母移动到词尾并且加上后缀-ay(譬如"b ...

  9. 《绝冬城之夜2》(Neverwinter Nights 2 CHT) 国际中文版(增加简体补丁)

    http://www.verycd.com/topics/118396/ <绝冬城之夜2>(Neverwinter Nights 2 CHT) 国际中文版(增加简体补丁) 状态: 精华资源 ...

最新文章

  1. Django MTV结构分析
  2. 【论文阅读和实现】On Spectral Clustering: Analysis and an algorithm【Python实现】
  3. 如何使用postman访问若依后台权限功能
  4. Apache Flink 零基础入门(十七)Flink 自定义Sink
  5. unity editor下选中GameObject粘贴复制pos信息
  6. Android组件化方案及组件消息总线modular-event实战
  7. Nacos集群部署说明
  8. Lumia 800 7.10.8783.12
  9. 清除Eclipse和Myeclipse中的工作空间目录
  10. 华为手机左侧快捷方式,手机桌面太复杂?华为手机自动对齐整理桌面图标方法!...
  11. 2015年维多利亚的秘密新晋十位天使
  12. python微信抢红包神器_用Python实现微信自动化抢红包,再也不用担心抢不到红包了...
  13. 1076: 三位数求解 C语言
  14. 学习笔记:std::quoted
  15. Live800:在线客服系统如何为客服减负?
  16. 中国人工智能领域企业分类(附未来企业排行)
  17. 能力天空视频下载助手
  18. 如何通过划分VLAN,有效规划企业网ip地址!
  19. fw150rm刷openwrt固件_今晚把本版几乎所有固件刷了个遍。发现Padavan固件速度吊打OpenWrt,有人知道原因吗?...
  20. springboot中报415错误怎么解决?

热门文章

  1. 年底了,该对自己说说总结的话了
  2. 去掉mysql u0000_js对于\u0000的处理
  3. JMF的安装与环境的配置
  4. Oracle的逻辑读和物理读
  5. Linux命令和shell脚本 重点
  6. android版开源绘图,Krita来到Android 适用于您的智能手机的最佳免费绘图应用程序...
  7. Vue中base64编码和解码
  8. Excel如何一键删除重复行?Leo老师告诉你
  9. mysql产品分类_MySQL习题1 一对多实例 产品和分类
  10. 计算机辅助数控编程交互图形,第8章-计算机辅助数控编程.ppt