poj 2251
http://poj.org/problem?id=2251
一道简单的BFS,只不过是二维数组,变三维数组,也就在原来基础上加了两个方向。
题意就是从S走到E,#不能走。
#include <stdio.h>
#include <string.h>
#include <queue>
#include <iostream>
using namespace std; #define judge(x,y,z) mark[x][y][z]&&str1[x][y][z]!='#'&&x>=0&&x<l&&y>=0&&y<r&&z>=0&&z<c //判断这个点是否可以走。
char str1[][][];
int l,r,c,sx,sy,sz,ex,ey,ez,step[][][];
int dic[][]{,,,,,-,,,,-,,,,,,,-,}; //方向。 struct note{
int x,y,z;
};
bool mark[][][];
queue<note>s; //定义了一个s的结构体队列。因为一个点要通过三个值来确定,所以这里选择用结构体是比较方便的。 void bfs(int x,int y,int z)
{
note u;
u.x=x,u.y=y,u.z=z;
while(!s.empty())
s.pop();
s.push(u);
while(!s.empty())
{
note v;
v=s.front();
s.pop();
if(v.x==ex&&v.y==ey&&v.z==ez) return;
for(int i=;i<;i++)
{
u.x=v.x+dic[i][];
u.y=v.y+dic[i][];
u.z=v.z+dic[i][];
if(judge(u.x,u.y,u.z)){
step[u.x][u.y][u.z]=step[v.x][v.y][v.z]+;
mark[u.x][u.y][u.z]=false;
s.push(u);
}
}
}
} int main()
{
while(scanf("%d%d%d",&l,&r,&c),l!=&&r!=&&c!=)
{
memset(mark,true,sizeof(mark));
memset(str1,,sizeof(str1));
memset(step,,sizeof(step));
for(int i=;i<l;i++)
for(int j=;j<r;j++)
{
scanf("%s",str1[i][j]);
for(int k=;k<c;k++)
{
if(str1[i][j][k]=='S')
{
sx=i;
sy=j;
sz=k;
}
if(str1[i][j][k]=='E')
{
ex=i;
ey=j;
ez=k;
}
}
}
step[sx][sy][sz]=;
bfs(sx,sy,sz);
if(step[ex][ey][ez]==) printf("Trapped!\n"); //如果走不到那个点,那么那个点的步数肯定是为0的,通过这个条件来判断是否可以找到那一个出口。
else printf("Escaped in %d minute(s).\n",step[ex][ey][ez]);
}
}
poj 2251的更多相关文章
- 【BFS】POJ 2251
POJ 2251 Dungeon Master 题意:有一个地图,三维,走的方向是上下,左右,前后.问你最小步数从起始点走到出口. 思路:三维的BFS,就是多加一组状态,需要细心(不细心如我就找了半个 ...
- POJ 2251 Dungeon Master --- 三维BFS(用BFS求最短路)
POJ 2251 题目大意: 给出一三维空间的地牢,要求求出由字符'S'到字符'E'的最短路径,移动方向可以是上,下,左,右,前,后,六个方向,每移动一次就耗费一分钟,要求输出最快的走出时间.不同L层 ...
- 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 /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)
POJ.2251 Dungeon Master (三维BFS) 题意分析 你被困在一个3D地牢中且继续寻找最短路径逃生.地牢由立方体单位构成,立方体中不定会充满岩石.向上下前后左右移动一个单位需要一分 ...
- BFS POJ 2251 Dungeon Master
题目传送门 /* BFS:这题很有意思,像是地下城,图是立体的,可以从上张图到下一张图的对应位置,那么也就是三维搜索,多了z坐标轴 */ #include <cstdio> #includ ...
- [ACM训练] 算法初级 之 搜索算法 之 深度优先算法DFS (POJ 2251+2488+3083+3009+1321)
对于深度优先算法,第一个直观的想法是只要是要求输出最短情况的详细步骤的题目基本上都要使用深度优先来解决.比较常见的题目类型比如寻路等,可以结合相关的经典算法进行分析. 常用步骤: 第一道题目:Dung ...
- poj 2251 Dungeon Master
http://poj.org/problem?id=2251 Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submis ...
随机推荐
- jqxTreeGrid
基本TreeGrid样本 <!DOCTYPE html> <html lang="en"> <head> <title id=" ...
- 新浪微博客户端(36)-自定义带placeholder的TextView
iOS 上自带的UITextView竟然不能设置placeholder,但是UITextView却可以,我也真是醉了.没办法了,自己写一个 DJTextView.h #import <UIKit ...
- rehat 出现GDB debuginfo-install 问题处理
本人使用rhel 6 GDB 调试代码时,出现以下错误: Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.166 ...
- asp.net cache 缓存
就是希望让Web应用程序从一开始运行到结束都一直存在,有人就说为什么不用Application呢?其实Cache是可以一段时间内自动更新数据的,而Application就无法做成这样的,另外Appli ...
- systemd
本文参照:https://wiki.archlinux.org/index.php/Systemd#Basic_systemctl_usage 做了翻译和整理 systemd是Linux下的一种ini ...
- [原] Android 自定义View 密码框 例子
遵从准则 暴露您view中所有影响可见外观的属性或者行为. 通过XML添加和设置样式 通过元素的属性来控制其外观和行为,支持和重要事件交流的事件监听器 详细步骤见:Android 自定义View步骤 ...
- 继承IDbConnection连接不同数据库
继承IDbConnection连接不同数据库 本方案可实现仅修改app.config即可连接不同数据库,但是设计数据库时需要注意各种数据库的数据类型是不一样的. 各种不同数据库的Connection. ...
- [译]git reset
git reset 如果说git revert是一个安全的撤销方式, 那么git reset就是一个非常危险的方法了. 当你使用git reset撤销的时候, 你没有可能在回到最初了-他是一个永久的不 ...
- NoSuchMethodException问题总结
1.编译异常,这个很容易发现并解决: method真的没有 替换jar包没有clean project. 2.编译正常,运行报错 这是一个遇到之后让人纳闷的异常,脑袋不转弯的时候真的容易被卡住.这时只 ...
- View的3种测量模式
EXACTLY:表示设置了精确的值,一般当childView设置其宽.高为精确值.match_parent时,ViewGroup会将其设置为EXACTLY: AT_MOST:表示子布局被限制在一个最大 ...