题目链接:2251 -- Dungeon Master (poj.org)

这是一个典型的bfs迷宫问题,只不过是三维的,唯一需要注意的就是输入要用cin,不要用scanf,因为有换行,其他没什么了,下面上代码:代码中有注释:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<queue>
using namespace std;
const int N=32;
int t[N][N][N],dx[6]={0,0,1,-1,0,0},dy[6]={1,-1,0,0,0,0},dz[6]={0,0,0,0,1,-1};
char s[N][N][N];
bool vis[N][N][N];
int nl,nr,nc,el,er,ec;
struct node{int l,r,c;
};
int bfs(int l,int r,int c)
{//多组输入,记得初始化数组 memset(t,0x3f,sizeof t);memset(vis,false,sizeof vis);t[l][r][c]=0;vis[l][r][c]=true;queue<node>q;q.push({l,r,c});while(q.size()){node temp=q.front();q.pop();if(temp.c==ec&&temp.l==el&&temp.r==er) break; for(int i=0;i<6;i++)//枚举下一步可以到达的6个位置 {int nz=temp.l+dz[i],nx=temp.r+dx[i],ny=temp.c+dy[i];if(nz>=1&&nz<=nl&&nx>=1&&nx<=nr&&ny>=1&&ny<=nc&&!vis[nz][nx][ny]&&s[nz][nx][ny]!='#')//判断位置是否走过以及是否合法 {vis[nz][nx][ny]=true;//标记为该位置已走过 t[nz][nx][ny]=t[temp.l][temp.r][temp.c]+1;//记录到达该位置的最短时间 q.push({nz,nx,ny});//将该位置入队 }}}return t[el][er][ec];
}
int main()
{while(1){scanf("%d%d%d",&nl,&nr,&nc);if(nl==0&&nr==0&&nc==0) break;int bl,br,bc;for(int i=1;i<=nl;i++)for(int j=1;j<=nr;j++)for(int k=1;k<=nc;k++){cin>>s[i][j][k];//因为有换行,读入一定要用cin if(s[i][j][k]=='S') bl=i,br=j,bc=k;//记录起点 if(s[i][j][k]=='E') el=i,er=j,ec=k;//记录终点 }int ans=bfs(bl,br,bc);if(ans!=0x3f3f3f3f) printf("Escaped in %d minute(s).\n",ans);else puts("Trapped!");}return 0;
} 

(POJ - 2251)Dungeon Master(bfs)相关推荐

  1. (BFS)Dungeon Master(poj2251)

    题目: 你被困在一个3D地牢中且继续寻找最短路径逃生!地牢由立方体单位构成,立方体中不定会充满岩石.向上下前后左右移动一个单位需要一分钟.你不能对角线移动并且迷宫四周坚石环绕. 是否存在逃出生天的可能 ...

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

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

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

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

  4. [Hadoop集群模式安装与配置全过程]红帽子RatHat6下hadoop集群模式安装(3个节点,master,slave1,slave2)

    红帽子RatHat6下hadoop集群模式安装(3个节点,master,slave1,slave2) 一.学习目标: 使用红帽子RatHat6在虚拟机上搭建hadoop集群,包含3个节点,体验集群分布 ...

  5. 【POJ2251】Dungeon Master(三维BFS)

    题面:[POJ2251]Dungeon Master 这是一道很有意思的题目,平时我们所接触的BFS大多是二维的,可这题不一样,这题是一道三维BFS!!! 这题不需要多讲,直接上代码就可以了: #in ...

  6. 数据结构与算法(7-2)图的遍历(深度优先遍历DFS、广度优先遍历BFS)(分别用邻接矩阵和邻接表实现)

    目录 深度优先遍历(DFS)和广度优先遍历(BFS)原理 1.自己的原理图 2.官方原理图 一.邻接矩阵的深度优先遍历(DFS) 1.原理图 2. 过程: 3.总代码 二.邻接表的深度优先遍历(DFS ...

  7. 【CF#505B】Mr. Kitayuta's Colorful Graph (并查集或Floyd或BFS)

    题干: Mr. Kitayuta has just bought an undirected graph consisting of n vertices and m edges. The verti ...

  8. Dungeon Master题解bfs

    Dungeon Master 题面翻译 题目描述 输入格式 输出格式 样例 #1 样例输入 #1 样例输出 #1 题解思路及TIME EXCEEDED问题 题解 超时题解(个人觉得没问题) 题面翻译 ...

  9. Dungeon Master(poj2251,bfs)

    http://poj.org/problem?id=2251 http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=15203 Dun ...

最新文章

  1. 学习C#中调用COM,后期绑定(以及对WinHttp COM对象的C#封装)
  2. 明抢华为市场,宣战苹果三星,这家创业公司胆子不小
  3. c语言趣味教学题目及答案,C语言趣味程序设计-题目百例.doc
  4. 030_自己实现一个HashSet
  5. 中国农民丰收节交易会新闻发布会倡导功能农业·农业大健康
  6. 02 | 高性能 IO 模型:为什么单线程 Redis 能那么快?
  7. 高性能key-value数据库
  8. P2469 [SDOI2010]星际竞速
  9. break VS continue
  10. java adt is保存快捷键_ADT - Eclipse 常用快捷键
  11. 软件测试管理的几个基本要素
  12. Openlayer通过wms请求geoserver加载慢
  13. Arch系统软件列表
  14. 最全的期货交易术语在这里
  15. Mac 右键的一些方法
  16. 解决QQ邮箱接收不到Stream邮件问题
  17. 【动手学习深度学习】01 安装运行环境——Windows
  18. python3 把类似这样的 '\xe5\xae\x9d\xe9\xb8\xa1\xe5\xb8\x82' 转换成汉字
  19. CI第一篇 Jenkins+github fir im 蒲公英pgyer com
  20. 有一段时间没来了,总结一下

热门文章

  1. 一文了解 Julia(lang)
  2. 详解 input accept属性
  3. Python基础 | Spyder的使用
  4. matlab怎么改变程序字体大小,matlab怎么把程序字体变大
  5. 欧莱雅的矿物质粉今天去买回来了
  6. python已打开页面获取信息_python+selenium实现自动登录网页获取信息(一)
  7. 【Linux杂篇】Windows远程登陆Linux、Linux静态IP配置
  8. 网络协议(十四):WebSocket、WebService、RESTful、IPv6、网络爬虫、HTTP缓存
  9. 【Gin框架】框架入门
  10. Java操作ffmpeg--截取视频