题目描述

你被困在一个三维的空间中,现在要寻找最短路径逃生!
空间由立方体单位构成
你每次向上下前后左右移动一个单位需要一分钟
你不能对角线移动并且四周封闭
是否存在逃出生天的可能性?如果存在,则需要多少时间?

输入

     输入第一行是一个数表示空间的数量。
  每个空间的描述的第一行为L,R和C(皆不超过30)。
  L表示空间的高度。
  R和C分别表示每层空间的行与列的大小。
  随后L层地牢,每层R行,每行C个字符。
  每个字符表示空间的一个单元。'#'表示不可通过单元,'.'表示空白单元。你的起始位置在'S',出口为'E'。
  每层空间后都有一个空行。L,R和C均为0时输入结束。

输出

每个空间对应一行输出。
如果可以逃生,则输出如下
Escaped in x minute(s).

x为最短脱离时间。
如果无法逃生,则输出如下
Trapped!

输入样例

3 4 5
S....
.###.
.##..
###.######
#####
##.##
##...#####
#####
#.###
####E1 3 3
S##
#E#
###0 0 0

输出样例

Escaped in 11 minute(s).
Trapped!
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <queue>
#include <algorithm>
#define N 35
using namespace std;
char mp[N][N][N];
int vis[N][N][N];
int k,n,m,sx,sy,sz,ex,ey,ez;
int to[6][3] = {{0,0,1},{0,0,-1},{0,1,0},{0,-1,0},{1,0,0},{-1,0,0}};
struct node
{int x,y,z,step;
};
bool check(int x,int y,int z)
{if(x<0 || y<0 || z<0 || x>=k || y>=n || z>=m)return 1;else if(mp[x][y][z] == '#')return 1;else if(vis[x][y][z])return 1;return 0;
}
int bfs()
{node a,next;queue<node> Q;a.x = sx,a.y = sy,a.z = sz;a.step = 0;vis[sx][sy][sz] = 1;Q.push(a);while(!Q.empty()){a = Q.front();Q.pop();if(a.x == ex && a.y == ey && a.z == ez)return a.step;for(int i = 0; i<6; i++){next = a;next.x = a.x+to[i][0];next.y = a.y+to[i][1];next.z = a.z+to[i][2];if(check(next.x,next.y,next.z))continue;vis[next.x][next.y][next.z] = 1;next.step = a.step+1;Q.push(next);}}return 0;
}
int main()
{while(scanf("%d%d%d",&k,&n,&m),n+m+k){for(int i = 0; i<k; i++){for(int j = 0; j<n; j++){scanf("%s",mp[i][j]);for(int r = 0; r<m; r++){if(mp[i][j][r] == 'S'){sx = i,sy = j,sz = r;}else if(mp[i][j][r] == 'E'){ex = i,ey = j,ez = r;}}}}memset(vis,0,sizeof(vis));int ans;ans = bfs();if(ans)printf("Escaped in %d minute(s).\n",ans);elseprintf("Trapped!\n");}return 0;
}

3D迷宫(啊啊啊我要预习BFS)相关推荐

  1. 3Ddungeon ~ 3D迷宫 BFS

    题目描述 You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed ...

  2. 用webgl打造自己的3D迷宫游戏

    用webgl打造自己的3D迷宫游戏 2016/09/19 · JavaScript · WebGL 原文出处: AlloyTeam    背景:前段时间自己居然迷路了,有感而发就想到写一个可以让人迷路 ...

  3. qt 3d迷宫游戏_《加雷利亚的地下迷宫与魔女的旅团》最新情报公布

    日本一旗下最新作品<加雷利亚的地下迷宫与魔女的旅团(Coven and labyrinth of Galleria)>公布了有关本作角色和新登场Facet的最新情报,让我们一起来看看吧! ...

  4. Python 用Ursina引擎制作一个3D迷宫游戏

    Ursina是一个3D引擎,初步使用方法,见以下文章: 手把手教你用Python编一个<我的世界> 1. 认识Ursina并学会绘制立体图形_Leleprogrammer的博客-CSDN博 ...

  5. qt 3d迷宫游戏_玩游戏找不到路是如何成为常态的?游戏视角选择的得与失

    游戏刚开始兴起的时候,游戏视角还不是问题.由于画面技术的限制,早期的游戏无一例外都是2D平面画面.3D游戏兴起以后,设计者游戏视角的选择更加多样,在带来了更多样游戏体验的同时也劝退了大批游戏玩家.3D ...

  6. 3D迷宫(二)babylon.js

    3D迷宫(二)babylon.js 续上一篇的文章. 前面说到迷宫的算法,地图生成路线的代码如下: // 绘制 地图 数据this.__proto__.MapDrawData = function() ...

  7. 3D迷宫(一) babylon.js

    3D迷宫(一) babylon.js 这是我的第一个3D游戏,基于上次的迷宫小游戏制作的,之后学了babylon.js,就乘机做了个3D迷宫的,可以是边学边做的小游戏. 基本都是用到babylon.j ...

  8. qt 3d迷宫游戏_Switch游戏 | 吃豆旅行走走停停

    <吃豆人>这款游戏,阿狐相信很多鸡友都不陌生.它是一个非常简单的游戏,只需要一个十字键就可以玩,操作简单却成为了80年代最经典的街机游戏之一,<吃豆人>承载了不少人的记忆. 吃 ...

  9. 【Qt编程】3D迷宫游戏

    说起迷宫想必大家都很熟悉,个人感觉迷宫对人的方向感是很大的考验,至少我的方向感是不好的,尤其是在三维空间中.由于这段时间帮导师做项目用到了三维作图,便心血来潮想做个三维迷宫玩玩.要想画出三维的迷宫游戏 ...

最新文章

  1. linux中yum进程占cpu百分之九十,在Deepin Linux系统中kworker进程占用CPU达到100%的解决...
  2. as工程放到源码编译_Android 7.1源码编译导入AS完整教程
  3. yield return关键字怎么使用?
  4. Linux各个版本配置要求
  5. 使用NSKeyedArchiver归档
  6. Hadoop端口介绍及各种启动命令列表
  7. 使用Java的Apache Camel入门
  8. java面试题27 java中下面哪些是Object类的方法()
  9. 限制RICHTEXTBOX的输入的范围
  10. Silevo需征收进口关税?美光伏巨头各执一词
  11. asp.net+mysql,asp.net+mysql后台盲注入
  12. QT之Tcp数据发送测试工具
  13. openSUSE-Leap-15.4-DVD-x86_64的日常使用设置
  14. Django之wagtail安装及配置
  15. 讲解如何在HTML中添加背景图片?
  16. Intel VT-d(1)- 简介
  17. OV7725之AL422B-FIFO及摄像头的驱动原理
  18. 一篇文章告诉你,事件知识图谱核心关键技术有哪些?
  19. FAT文件系统原理(一)
  20. 若非群玉山头见,会向瑶台月下逢

热门文章

  1. 写一个圣诞祝福的网页
  2. ECU 自动化生产测试系统
  3. Python入坑函数:从入门到走火入魔,你懂得
  4. EventBus回调不执行原因
  5. Linux基础命令《一》
  6. Linux文件属性更改命令
  7. 文献翻译 Deep Learning
  8. 开发信标题,新的思考角度!
  9. olcd12864的u8g2库_【原创】OLED屏-U8glib库 增强版 U8G2库。
  10. 图解跨域请求、反向代理原理,对前端更友好的反向代理服务器 - Caddy