POJ P2251 Dungeon Master 题解
深搜,只不过是三维的。
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int l,r,c;
int sx,sy,sz;
int ex,ey,ez;
int ans=;
char map[][][];
int book[][][]= {};
int flag=;
void dfs(int x,int y,int z,int step) {
if(x==ex&&y==ey&&z==ez) {
ans=min(ans,step);
flag=;
return;
}
if(map[x+][y][z]!='#'&&book[x+][y][z]!=&&x+<=l) {
book[x+][y][z]=;
dfs(x+,y,z,step+);
book[x+][y][z]=;
}
if(map[x-][y][z]!='#'&&book[x-][y][z]!=&&x->=) {
book[x-][y][z]=;
dfs(x-,y,z,step+);
book[x-][y][z]=;
}
if(map[x][y+][z]!='#'&&book[x][y+][z]!=&&y+<=r) {
book[x][y+][z]=;
dfs(x,y+,z,step+);
book[x][y+][z]=;
}
if(map[x][y-][z]!='#'&&book[x][y-][z]!=&&y->=) {
book[x][y-][z]=;
dfs(x,y-,z,step+);
book[x][y-][z]=;
}
if(map[x][y][z+]!='#'&&book[x][y][z+]!=&&z+<=c) {
book[x][y][z+]=;
dfs(x,y,z+,step+);
book[x][y][z+]=;
}
if(map[x][y][z-]!='#'&&book[x][y][z-]!=&&z->=) {
book[x][y][z-]=;
dfs(x,y,z-,step+);
book[x][y][z-]=;
}
}
int main() {
while((cin>>l>>r>>c)&&l!=&&r!=&&c!=) {
for(int i=; i<=l; i++) {
for(int j=; j<=r; j++) {
for(int k=; k<=c; k++) {
cin>>map[i][j][k];
if(map[i][j][k]=='S') {
sx=i;
sy=j;
sz=k;
book[i][j][k]=;
}
if(map[i][j][k]=='E') {
ex=i;
ey=j;
ez=k;
}
}
}
}
dfs(sx,sy,sz,);
if(flag==) {
cout<<"Trapped!"<<endl;
}
else
{
cout<<"Escaped in "<<ans<<" minute(s)."<<endl;
}
memset(book,,sizeof(book));
flag=;
ans=;
}
}
请各位大佬斧正(反正我不认识斧正是什么意思)
POJ P2251 Dungeon Master 题解的更多相关文章
- 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(用BFS求最短路)
POJ 2251 题目大意: 给出一三维空间的地牢,要求求出由字符'S'到字符'E'的最短路径,移动方向可以是上,下,左,右,前,后,六个方向,每移动一次就耗费一分钟,要求输出最快的走出时间.不同L层 ...
- 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 ...
- poj 2251 Dungeon Master
http://poj.org/problem?id=2251 Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submis ...
- POJ 2251 Dungeon Master (三维BFS)
题目链接:http://poj.org/problem?id=2251 Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total S ...
- POJ 2251 Dungeon Master(3D迷宫 bfs)
传送门 Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 28416 Accepted: 11 ...
- POJ 2251 Dungeon Master (非三维bfs)
Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 55224 Accepted: 20493 ...
随机推荐
- (十)pdf的构成之交叉引用表
交叉引用表(xref) 其中包含对文档中所有对象的引用.交叉引用表的目的是允许随机访问文件中的对象,因此我们不需要读取整个PDF文档来定位特定对象.每个对象由交叉引用表中的一个条目表示.(该表保存 ...
- go 程序整个执行过程
- PHP的序列化、对象、反射、异常与错误
1. 怎么理解php里面的序列化与反序列化? 序列化是将对象转换为字节流.反序列化就是将流转换为对象. 这两个过程结合起来,可以轻松地存储和传输数据,在网络中可以做到跨平台.快速传输. 两种序列化方式 ...
- C# vb .net实现焦距淡色特效滤镜
在.net中,如何简单快捷地实现Photoshop滤镜组中的焦距淡色效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...
- 使用 audioqueue 播放PCM数据
// // MainViewController.h // RawAudioDataPlayer // // Created by SamYou on 12-8-18. // Copyright (c ...
- Swagger Liunx环境搭建(亲测百分百可用)
一.安装nodejs 下载编译好的nodejs安装包,下载地址: https://nodejs.org/dist/v10.10.0/ (作者下载的10.10.0,可根据自己需要下载不同版本) 将下载好 ...
- CentOS 使用163yum源
下载163源 # wget http://mirrors.163.com/.help/CentOS7-Base-163.repo 如果报以下错误 -bash: wget: command not fo ...
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
- TOML配置文件
Toml是一种易读.mini语言,由github前CEO,Tom创建.Tom's Obvious, Minimal Language. TOML致力于配置文件的小型化和易读性.wiki:https:/ ...
- Linux命令——uname
简介 uname用于输出系统信息. uname参数 -a :所有系统相关的资讯,包括底下的数据都会被列出来:-s :系统核心名称-r :核心的版本-m :本系统的硬件名称,例如 i686 或 x86_ ...