题目大意:给一个三维图,可以前后左右上下6种走法,走一步1分钟,求最少时间(其实就是最短路)

分析:这里与二维迷宫是一样的,只是多了2个方向可走,BFS就行(注意到DFS的话复杂度为O(6^n)肯定会TLE)

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <iterator>
#include <queue>
using namespace std;
#define N 33
#define M 30000
struct p
{
int ll,rr,cc,ans;
};
typedef struct p sp;
char m[N][N][N];
int mark[N][N][N];
int l,r,c;
int dir[][]={{,-,,,,},{,,-,,,},{,,,,-,}}; void test()//可跟踪mark数组debug程序
{
int i,j,k;
for (i=;i<l;i++)
{
for (j=;j<r;j++)
{
for (k=;k<c;k++)
{
printf("%d",mark[i][j][k]);
}
printf("\n");
}
printf("\n");
}
} int lawful(int x,int y,int z)
{
if (x<||x>=l||y<||y>=r||z<||z>=c||m[x][y][z]=='#')//判断合法性要完整!!!m[x][y][z]=='#'
{
return ;
}
else
{
return ;
}
} void solve()
{
sp point,point1;
int i,j,k;
queue<p> q;//要定义在函数内,使其每次测试都能清空队列!!!
memset(mark,,sizeof(mark));
for (i=;i<l;i++)
{
for (j=;j<r;j++)
{
for (k=;k<c;k++)
{
if (m[i][j][k]=='S')
{
point.ll=i;
point.rr=j;
point.cc=k;
point.ans=;
mark[i][j][k]=;//要记得给第一步步打上标记!!!
q.push(point);
}
}
}
}
while (!q.empty())
{
point=q.front();
q.pop();
if (m[point.ll][point.rr][point.cc]=='E')
{
printf("Escaped in %d minute(s).\n",point.ans);
return;
}
for (i=;i<;i++)
{
point1.ll=point.ll+dir[][i];
point1.rr=point.rr+dir[][i];
point1.cc=point.cc+dir[][i];
point1.ans=point.ans+;
if (lawful(point1.ll,point1.rr,point1.cc)&&!mark[point1.ll][point1.rr][point1.cc])//要记得判断标记!!!
{
q.push(point1);
mark[point1.ll][point1.rr][point1.cc]=;//记得更新标记!!!
// test();
}
}
}
printf("Trapped!\n"); } int main()
{
int i,j;
while (scanf("%d %d %d",&l,&r,&c))
{
if (l==&&r==&&c==)
{
break;
}
for (i=;i<l;i++)
{
for (j=;j<r;j++)
{
scanf("%s",m[i][j]);//输入字符的快捷方法
getchar();
}
}
solve();
} return ;
}

POJ-2251 三维迷宫的更多相关文章

  1. poj 2251 三维地图最短路径问题 bfs算法

    题意:给你一个三维地图,然后让你走出去,找到最短路径. 思路:bfs 每个坐标的表示为 x,y,z并且每个点都需要加上时间 t struct node{ int x, y, z; int t;}; b ...

  2. POJ 2251 三维BFS(基础题)

    Dungeon Master Description You are trapped in a 3D dungeon and need to find the quickest way out! Th ...

  3. POJ.2251 Dungeon Master (三维BFS)

    POJ.2251 Dungeon Master (三维BFS) 题意分析 你被困在一个3D地牢中且继续寻找最短路径逃生.地牢由立方体单位构成,立方体中不定会充满岩石.向上下前后左右移动一个单位需要一分 ...

  4. POJ 2251 Dungeon Master --- 三维BFS(用BFS求最短路)

    POJ 2251 题目大意: 给出一三维空间的地牢,要求求出由字符'S'到字符'E'的最短路径,移动方向可以是上,下,左,右,前,后,六个方向,每移动一次就耗费一分钟,要求输出最快的走出时间.不同L层 ...

  5. POJ 2251 Dungeon Master(地牢大师)

    p.MsoNormal { margin-bottom: 10.0000pt; font-family: Tahoma; font-size: 11.0000pt } h1 { margin-top: ...

  6. 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 ...

  7. 【BFS】POJ 2251

    POJ 2251 Dungeon Master 题意:有一个地图,三维,走的方向是上下,左右,前后.问你最小步数从起始点走到出口. 思路:三维的BFS,就是多加一组状态,需要细心(不细心如我就找了半个 ...

  8. BFS POJ 2251 Dungeon Master

    题目传送门 /* BFS:这题很有意思,像是地下城,图是立体的,可以从上张图到下一张图的对应位置,那么也就是三维搜索,多了z坐标轴 */ #include <cstdio> #includ ...

  9. UVa532 Dungeon Master 三维迷宫

        学习点: scanf可以自动过滤空行 搜索时要先判断是否越界(L R C),再判断其他条件是否满足 bfs搜索时可以在入口处(push时)判断是否达到目标,也可以在出口处(pop时)   #i ...

  10. Dungeon Master poj 2251 dfs

    Language: Default Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16855 ...

随机推荐

  1. (C#) 线程之 AutoResetEvent, EventHandle.

    AutoResetEvent 允许线程通过发信号互相通信.通常,此通信涉及线程需要独占访问的资源. 线程通过调用 AutoResetEvent 上的 WaitOne 来等待信号.如果 AutoRese ...

  2. 【Android 界面效果48】Android-RecyclerView-Item点击事件设置

    在上一篇博客Android-RecylerView初识中提到,RecyclerView不再负责Item视图的布局及显示,所以RecyclerView也没有为Item开放OnItemClick等点击事件 ...

  3. Cocos2d-x下HTTP网络通讯

    引入头文件: #include "cocos-ext.h" 添加下载按钮: CCMenuItemImage *pCloseItem = CCMenuItemImage::creat ...

  4. 炫酷的Html+css (一)

    博客园在别的 博主看到一个样式, 里面有一段这样的 正方体旋转的 动态图 吸引了我. 找博主要了代码, 贴出来 与大家共享. 鼠标放上去会展开 一大一小两个正方体, 鼠标悬浮上去, 外面的正方体会展开 ...

  5. tomcat下部署项目的流程和遇到的问题笔记

    简单部署流程: 1,解析域名关联到服务器ip 2,配置服务器jre运行环境 3,安装tomcat 4,项目打war包,放入tomcat根目录下webapps(tomcat默认加载的项目目录)目录下 5 ...

  6. mysql一些常用的查询语句总结

    工作中会遇到一些比较有用的mysql查询语句,有了它,可以对mysql进行更全面的维护和管理,下面就写一下我记录的 1.按照字段ru_id查询dsc_order_goods表中ru_id出现次数由多到 ...

  7. linux lnmp搭建

    1.安装nginx: yum install gcc -y yum install -y pcre pcre-devel yum install -y zlib zlib-devel yum inst ...

  8. MySQL latch小结

      lock和latch的比较 对于INNODB存储引擎中的latch可以通过命令 SHOW ENGINE INNODB MUTEX 看到latch的更多信息 说明: 列Type显示的总是 InnoD ...

  9. C#自定义规则对比两个集合的对象是否相等

    IList<获取的类> ret = 类的结果集; return ret.Except(另一个相同类型的对象列表集, new AClassComPare()): public class A ...

  10. 【[TJOI2017]DNA】

    [题目][https://www.lydsy.com/JudgeOnline/problem.php?id=4892] 好像用\(SAM\)做的都是\(dfs\)啊 其实这里也是搜索 如果用\(SAM ...