ZOJ 1940 Dungeon Master【三维BFS】
<题目链接>
题目大意:
在一个立体迷宫中,问你从起点走到终点的最少步数。
解题分析:
与普通的BFS基本类似,只需要给数组多加一维,并且走的时候多加 上、下这两个方向就行。
- #include <cstdio>
- #include <cstring>
- #include <queue>
- #include <iostream>
- #include <algorithm>
- using namespace std;
- int a,b,c;
- char mpa[][][];
- int vis[][][];
- int dir[][]={{,,},{-,,},{,,},{,,},{,-,},{,,-}};
- struct node{
- int x,y,z;
- int step;
- node(int a=,int b=,int c=,int d=){
- x=a,y=b,z=c,step=d;
- }
- }st,et;
- void bfs(){
- memset(vis,,sizeof(vis));
- queue<node>q;
- q.push(st);
- vis[st.x][st.y][st.z]=;
- while(!q.empty()){
- node now=q.front();
- q.pop();
- if(now.x==et.x&&now.y==et.y&&now.z==et.z){
- printf("Escaped in %d minute(s).\n",now.step);
- return;
- }
- for(int i=;i<;i++){
- int xx=now.x+dir[i][];
- int yy=now.y+dir[i][];
- int zz=now.z+dir[i][];
- if(xx<||xx>a||yy<||yy>b||zz<||zz>c||vis[xx][yy][zz]||mpa[xx][yy][zz]=='#')continue;
- vis[xx][yy][zz]=;
- q.push(node(xx,yy,zz,now.step+));
- }
- }
- printf("Trapped!\n");
- }
- int main(){
- while(scanf("%d %d %d",&a,&b,&c)!=EOF,a||b||c){
- for(int i=;i<=a;i++){
- getchar();
- for(int j=;j<=b;j++){
- scanf("%s",mpa[i][j]+);
- for(int k=;k<=c;k++){
- if(mpa[i][j][k]=='S')st=node(i,j,k,);
- if(mpa[i][j][k]=='E')et=node(i,j,k,);
- }
- }
- }
- bfs();
- }
- return ;
- }
2018-08-30
ZOJ 1940 Dungeon Master【三维BFS】的更多相关文章
- ZOJ 1940 Dungeon Master 三维BFS
Dungeon Master Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Desc ...
- 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(用BFS求最短路)
POJ 2251 题目大意: 给出一三维空间的地牢,要求求出由字符'S'到字符'E'的最短路径,移动方向可以是上,下,左,右,前,后,六个方向,每移动一次就耗费一分钟,要求输出最快的走出时间.不同L层 ...
- POJ 2251 Dungeon Master (三维BFS)
题目链接:http://poj.org/problem?id=2251 Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total S ...
- POJ:Dungeon Master(三维bfs模板题)
Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16748 Accepted: 6522 D ...
- Dungeon Master(三维bfs)
You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed of un ...
- UVa532 Dungeon Master 三维迷宫
学习点: scanf可以自动过滤空行 搜索时要先判断是否越界(L R C),再判断其他条件是否满足 bfs搜索时可以在入口处(push时)判断是否达到目标,也可以在出口处(pop时) #i ...
- 【POJ - 2251】Dungeon Master (bfs+优先队列)
Dungeon Master Descriptions: You are trapped in a 3D dungeon and need to find the quickest way out! ...
- 棋盘问题(DFS)& Dungeon Master (BFS)
1棋盘问题 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的 ...
随机推荐
- Windows Service 2012 R2 下如何建立ftp服务器
1.首先在本地机器上创建一个用户!这些用户是用来登录到FTP的!我的电脑右键->管理->本地用户和组->用户->“右键”新建用户->输入用户名和密码再点创建就行了! 2. ...
- 用Github发布静态页面
一.以下几个简单的步骤 前提是得有 Github 账号啊!!! 在 Github 上新建一个仓库 New repository 填写仓库的名字,勾选 public 和 Initalize this ...
- Mysql哪些字段适合建立索引
数据库建立索引常用的规则如下: 1.表的主键.外键必须有索引: 2.数据量超过300的表应该有索引: 3.经常与其他表进行连接的表,在连接字段上应该建立索引: 4.经常出现在Where子句中的字段,特 ...
- python并发编程之IO模型,
了解新知识之前需要知道的一些知识 同步(synchronous):一个进程在执行某个任务时,另外一个进程必须等待其执行完毕,才能继续执行 #所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调 ...
- LeetCode(123):买卖股票的最佳时机 III
Hard! 题目描述: 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你最多可以完成 两笔 交易. 注意: 你不能同时参与多笔交易(你必 ...
- Niagara 泵阀
1.泵阀系统 2.Niagara 每次在启动workbench的时候安装一下daemon,后启动platform 启动station的时候,当station的status变成Running之后启动
- bzoj2973转移矩阵构造法!
/* 构造单位矩阵(转移矩阵) 给定n*m网格,每个格子独立按照长度不超过6的操作串循环操作 对应的操作有 0-9:拿x个石头到这个格子 nwse:把这个格子的石头推移到相邻格子 d:清空该格石子 开 ...
- web.xml中的ContextLoaderListener和DispatcherServlet区别
ContextLoaderListener和DispatcherServlet都会在Web容器启动的时候加载一下bean配置. 区别在于: DispatcherServlet一般会加载MVC相关的be ...
- Linux文件系统及文件类型
Linux文件系统: 根文件系统(rootfs) root filesystem LSB, FHS: (FileSystem... /etc, /usr, /var, /root.... /bo ...
- 目标检测算法之YOLOv1与v2
YOLO:You Only Look Once(只需看一眼) 基于深度学习方法的一个特点就是实现端到端的检测,相对于其他目标检测与识别方法(如Fast R-CNN)将目标识别任务分成目标区域预测和类别 ...