(POJ - 2251)Dungeon Master(bfs)
题目链接: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)相关推荐
- (BFS)Dungeon Master(poj2251)
题目: 你被困在一个3D地牢中且继续寻找最短路径逃生!地牢由立方体单位构成,立方体中不定会充满岩石.向上下前后左右移动一个单位需要一分钟.你不能对角线移动并且迷宫四周坚石环绕. 是否存在逃出生天的可能 ...
- POJ 2251 Dungeon Master(三维BFS求最短路径)
3D dungeon 时间限制: 1 Sec 内存限制: 128 MB 提交: 2 解决: 2 [提交][状态][讨论版][命题人:201506020829][Edit] [TestData] 题 ...
- Dungeon Master(地牢大师、底下城主)三维bfs
1253:Dungeon Master(地牢大师.底下城主) 要敢于变通 和普通bfs的区别,仅仅在于数组开三维+搜索方向多了上下(现在的搜索方向是 上下东南西北) bfs多组输入要记得清空队列 // ...
- [Hadoop集群模式安装与配置全过程]红帽子RatHat6下hadoop集群模式安装(3个节点,master,slave1,slave2)
红帽子RatHat6下hadoop集群模式安装(3个节点,master,slave1,slave2) 一.学习目标: 使用红帽子RatHat6在虚拟机上搭建hadoop集群,包含3个节点,体验集群分布 ...
- 【POJ2251】Dungeon Master(三维BFS)
题面:[POJ2251]Dungeon Master 这是一道很有意思的题目,平时我们所接触的BFS大多是二维的,可这题不一样,这题是一道三维BFS!!! 这题不需要多讲,直接上代码就可以了: #in ...
- 数据结构与算法(7-2)图的遍历(深度优先遍历DFS、广度优先遍历BFS)(分别用邻接矩阵和邻接表实现)
目录 深度优先遍历(DFS)和广度优先遍历(BFS)原理 1.自己的原理图 2.官方原理图 一.邻接矩阵的深度优先遍历(DFS) 1.原理图 2. 过程: 3.总代码 二.邻接表的深度优先遍历(DFS ...
- 【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 ...
- Dungeon Master题解bfs
Dungeon Master 题面翻译 题目描述 输入格式 输出格式 样例 #1 样例输入 #1 样例输出 #1 题解思路及TIME EXCEEDED问题 题解 超时题解(个人觉得没问题) 题面翻译 ...
- Dungeon Master(poj2251,bfs)
http://poj.org/problem?id=2251 http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=15203 Dun ...
最新文章
- 学习C#中调用COM,后期绑定(以及对WinHttp COM对象的C#封装)
- 明抢华为市场,宣战苹果三星,这家创业公司胆子不小
- c语言趣味教学题目及答案,C语言趣味程序设计-题目百例.doc
- 030_自己实现一个HashSet
- 中国农民丰收节交易会新闻发布会倡导功能农业·农业大健康
- 02 | 高性能 IO 模型:为什么单线程 Redis 能那么快?
- 高性能key-value数据库
- P2469 [SDOI2010]星际竞速
- break VS continue
- java adt is保存快捷键_ADT - Eclipse 常用快捷键
- 软件测试管理的几个基本要素
- Openlayer通过wms请求geoserver加载慢
- Arch系统软件列表
- 最全的期货交易术语在这里
- Mac 右键的一些方法
- 解决QQ邮箱接收不到Stream邮件问题
- 【动手学习深度学习】01 安装运行环境——Windows
- python3 把类似这样的 '\xe5\xae\x9d\xe9\xb8\xa1\xe5\xb8\x82' 转换成汉字
- CI第一篇 Jenkins+github fir im 蒲公英pgyer com
- 有一段时间没来了,总结一下
热门文章
- 一文了解 Julia(lang)
- 详解 input accept属性
- Python基础 | Spyder的使用
- matlab怎么改变程序字体大小,matlab怎么把程序字体变大
- 欧莱雅的矿物质粉今天去买回来了
- python已打开页面获取信息_python+selenium实现自动登录网页获取信息(一)
- 【Linux杂篇】Windows远程登陆Linux、Linux静态IP配置
- 网络协议(十四):WebSocket、WebService、RESTful、IPv6、网络爬虫、HTTP缓存
- 【Gin框架】框架入门
- Java操作ffmpeg--截取视频