三维数组加宽搜

#include <stdlib.h>
#include <string.h>
#include <stdio.h>
const int MAXN=;
int c, k, h;
char ma[MAXN][MAXN][MAXN]; //定义三维数组 长宽高
int visit[MAXN][MAXN][MAXN]; //标记数组
struct node {
int c, k, h;//结构体记录到达某个点 c长k宽h高
int step;//走的步数
};
struct node t[];//结构体队列
struct node p, q, w, l;
int f[][] = {,,, ,,-, ,,, ,-,, ,,, -,,};//向上下左右前后六个方向移动 包括上楼
void bfs() {
visit[p.c][p.k][p.h] = ;//标记已经走过
int front = , rear = ;
t[rear++] = p;//入队
while(front!=rear) { //当队列不为空的时候
w = t[front++];
if(w.c==q.c&&w.k==q.k&&w.h==q.h) { //如果是终点,直接输出
printf("Escaped in %d minute(s).\n", w.step);
return ;
}
for(int i=; i<; i++) { //否则,遍历六个方向
l = w;
l.c += f[i][];
l.k += f[i][];
l.h += f[i][];
if(l.c>=&&l.c<c&&l.k>=&&l.k<k&&l.h>=&&l.h<h&&ma[l.c][l.k][l.h]!='#'&&visit[l.c][l.k][l.h]==) { //如果符合条件
l.step++;//步数增加
visit[l.c][l.k][l.h] = ;//标记访问过了
t[rear++] = l;//入列
}
}
}
printf("Trapped!\n");//否则,输出无法到达
}
int main() {
memset(t, , sizeof(struct node)); //先清空
while(~scanf("%d %d %d", &c, &k, &h)) { //c长k宽h高
if(c==&&k==&&h==) break;
for(int i=; i<c; i++) {
for(int j=; j<k; j++) {
scanf("%s", ma[i][j]);//按照字符串输入
for(int w = ; w<h; w++) {
if(ma[i][j][w]=='S') { //记录起点
p.c = i;
p.k = j;
p.h = w;
p.step = ;
} else if(ma[i][j][w]=='E') { //记录终点
q.c = i;
q.k = j;
q.h = w;
}
}
}
}
memset(visit, , sizeof(visit));//清空标记数组
bfs();//广搜
}
return ;
}

Virtual Judge POJ 2251 Dungeon Master的更多相关文章

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

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

  2. BFS POJ 2251 Dungeon Master

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

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

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

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

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

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

  6. poj 2251 Dungeon Master

    http://poj.org/problem?id=2251 Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submis ...

  7. POJ 2251 Dungeon Master (三维BFS)

    题目链接:http://poj.org/problem?id=2251 Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total S ...

  8. POJ 2251 Dungeon Master(3D迷宫 bfs)

    传送门 Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 28416   Accepted: 11 ...

  9. POJ 2251 Dungeon Master (非三维bfs)

    Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 55224   Accepted: 20493 ...

随机推荐

  1. Git的学习和使用

    1.1. Git 了解git的仓库概念 熟悉何为版本控制,了解分布式版本控制(git)和集中式版本控制(svn) 能够熟练使用git的基本指令完成仓库的初始化/添加/提交/日志/回退/分支等操作 gi ...

  2. 优先队列-UVA10603

    #include<cstdio> #include<cstring> #include<queue> using namespace std; typedef st ...

  3. CF468A | 24 Game 找规律+打表

    (翻译版本来自 Luogu by lonelysir ) 题目描述 小X一直很喜欢一个纸牌游戏:"24点",但最近他发现这个游戏太简单了,所以他发明了一个新游戏. 你有一个整数序列 ...

  4. Agri-Net POJ - 1258 prim

    #include<iostream> #include<cstdio> #include<cstring> using namespace std; ; #defi ...

  5. [CF1303C] Perfect Keyboard - DFS

    Solution 根据原字符串建图,每个字符是一个点,相邻则连边 然后从每一个度数为 \(1\) 的点开始爆搜连通块,合法情况下应该是一条链 #include <bits/stdc++.h> ...

  6. from selenium.webdriver.chrome.options import Options中add_argument 常用参数表收集

    chrome_options.add_argument("xxx") 序号 参数 说明 1 --allow-outdated-plugins 不停用过期的插件. 2 --allow ...

  7. java - synchronized与lock的区别

    synchronized与lock的区别 原始构成 synchronized是关键字属于JVM层面 monitorenter(底层是通过monitor对象来完成,其实wait/notify等对象也依赖 ...

  8. ps导出svg

    svg初识 看到一些复杂的svg图形很好奇是手写出来的么,看了源码望而却步.网上看到ps都可以导出svg,然后试了下. 需要加载一个脚本,js写的,把文件复制到路径后重启ps,修改图形名字,然后保存成 ...

  9. smarty文章字符截取

    {%$data.dealer_info.address|replace:' ':''|cutstr:58%} cutstr:58

  10. mybatis第二天01

    MyBatis第二天01 1.高级结果映射 1.1根据视频案例,分析表之间的关系 数据模型分析 1. 明确每张表存储的信息 2. 明确每张表中关键字段(主键.外键.非空) 3. 明确数据库中表与表之间 ...