POJ2251Dungeon Master
http://poj.org/problem?id=2251
题意 : 就是迷宫升级版,从以前的一个矩阵也就是一层,变为现在的L层," . "是可以走,但是“#”不可以走,从S走到E,求最短的路径,若是找不到就输出“Trapped!”,每一层的同一个位置若都是" . "是可以直接走的,换句话说,map[1][j][k]与map[2][j][k]若都是" . ",是可以从map[1][j][k]走到map[2][j][k]的
思路 : 求最短路径,用BFS ,这个题比较搞,分类在DFS里,但用DFS会超时啊,所以倒是欺骗了不少童鞋,这个题我没写不出来,会神说用3维的东南西北上下,六个方向进行搜索即可,好吧,好麻烦
#include<cstdio> #include<iostream> #include<queue> #include<cstring> using namespace std ; const int maxn = 70 ; char map[maxn][maxn][maxn] ; int vis[maxn][maxn][maxn] ; struct node {int x,y,z;int step ; }ch,sh ; int floor,row,col ; int s[7][4] = {{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}} ; //存的方向,分别为上,下,东,西,北,南代表6个方向,里边的3个元素分别为z轴,x轴,y轴 int ex,ey,ez ; int stepp,zz,xx,yy; int sx,sy,sz; void bfs(int x,int y,int z) {queue<node>Q;ch.x = x ;ch.y = y ;ch.z = z ;ch.step = 0 ;//初始化Q.push(ch) ;//入队列vis[z][x][y] = 1 ;//标记为1while(!Q.empty()){sh = Q.front() ;Q.pop();if(sh.x == ex&&sh.y == ey&&sh.z == ez){stepp = sh.step ;//如果到了E点,就把步数保存下来,并返回return ;}for(int i = 0 ; i < 6 ; i++)//东南西北上下六个方向进行搜索 {zz = sh.z+s[i][0] ;xx = sh.x+s[i][1] ;yy = sh.y+s[i][2] ;if(zz>=0&&xx>=0&&yy>=0&&zz<floor&&xx<row&&yy<col&&map[zz][xx][yy]!= '#'&&!vis[zz][xx][yy]){//找到没有出边界的,不是'#'的,并且未被访问过的就进行入队操作ch.x = xx ;ch.y = yy ;ch.z = zz ;ch.step = sh.step+1;Q.push(ch) ;vis[zz][xx][yy] = 1 ;//标记这个点为已访问 }}} } int main() {while(~scanf("%d %d %d",&floor,&row,&col)){if(floor == 0&& row == 0&&col == 0)break ;stepp = 0 ;memset(vis,0,sizeof(vis)) ;for(int i = 0 ; i < floor ; i++){for(int j = 0 ; j < row ; j++){cin>>map[i][j] ;getchar();for(int k = 0 ; k < col ; k++){if(map[i][j][k] == 'S')//把S点的坐标保存下来 {sz = i ;sx = j ;sy = k ;}if(map[i][j][k] == 'E'){ez = i ;ex = j ;ey = k ;}}}}bfs(sx,sy,sz) ;if(stepp == 0)cout<<"Trapped!"<<endl ;elsecout<<"Escaped in "<<stepp<<" minute(s)."<<endl ;}return 0 ; }
View Code
转载于:https://www.cnblogs.com/luyingfeng/p/3283280.html
POJ2251Dungeon Master相关推荐
- 【POJ1321棋盘问题】【poj2251Dungeon Master】【poj3278Catch That Cow】【poj1426Find The Multi】
POJ1321棋盘问题 题意:在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k ...
- POJ2251-Dungeon Master
题目链接:点击打开链接 Description You are trapped in a 3D dungeon and need to find the quickest way out! The d ...
- kuangbin 专题一 简单搜索
kuangbin 专题一 简单搜索 1.POJ1321棋盘问题[DFS] 代码 自己的想法 2.POJ2251Dungeon Master[三维空间BFS] 代码 自己的想法 3.POJ3278 Ca ...
- git 创建分支并合并到master 上
1 创建一个dev的分支 git branch dev 2 切换到dev 分支上 git checkout dev (创建并切换是git checkout -b 分支名) -------------- ...
- 查询Master下的系统表和系统视图获取数据库的信息和简单的渗透测试
在SQL中可以通过查询Master下的系统表(sys)和系统视图(information_schema)获取数据库的信息.SQL2000和SQL2005的结构略有不同. 系统表结构参考系统表详细说明. ...
- git ssh创建分支_Git(2):在gitlab中创建开发用户,以及master分支的安全管理
一.创建用户 1.创建管理gitlab的开发人员的用户 2.配置用户信息 3.将用户添加到java-daem组中 4.用户登录成功后,在用户界面为用户添加ssh认证 5.在linux主机中将maste ...
- Blender程序性纹理学习教程大师班 Creative Shrimp – Procedural Texturing Blender Master Class
标题:创意虾-程序纹理Blender大师班 信息: 什么是程序纹理? 程序纹理将简单的数学转换为无限的真实感着色器,具有无限的多样性和分辨率. 超越看起来像一团像素特写的图像纹理,运用程序纹理的力量, ...
- c4d跟踪特效合成视频教程 Master Motion Tracking with Cinema 4D
c4d跟踪特效合成视频教程 Master Motion Tracking with Cinema 4D MP4 |视频:h264,1280×720 |音频:aac,48000 Hz 语言:英语+机译中 ...
- Maya硬表面建模学习教程 Master Hard Surface Modeling in Maya 2020
Maya硬表面建模学习教程 Master Hard Surface Modeling in Maya 2020 流派:电子学习| MP4 |视频:h264,1280×720 |音频:aac,48000 ...
最新文章
- import提升导致Fundebug报错:“请配置apikey”
- MyEclipse解决Launching xx on MyEclipse Tomcat has encountered a problem
- table: github.com/astaxie/beego/orm.Ormer not found
- 自己用嵌入式系统搭建云服务器,嵌入式服务器搭建
- 中小学课java_java毕业设计_springboot框架的中小学排课与实现
- c语言 字符去重复以及冒泡排序
- AE中图层叠加模式的中英对照及说明
- C/C++ EasyX 立方体与超立方体的投影 与 伸缩和旋转变换
- img标签图片自适应
- 读取EXCEL表格数据到MATLAB成为矩阵
- 3.7计算机网络(IP数据报格式,IP数据报分片,IPv4)
- python去除图片水印_Python | 图中使用类的水印
- 汪国真的八字命理分析
- 外呼系统《OpenSIPS2.4代理FreeSwitch》(2022版)
- httpclient-Connection pool shut down 问题排查
- TCP协议面试10连问,网友直呼太强!
- 折腾人的 excel 计算公式
- 旺旺:长风破浪会有时,28年终不止
- html如何通过路径查找图片,css添加图片怎样找图片路径?
- kubesphere 问题解决
热门文章
- USACO3.15stamps(dp)
- asp.net服务器端跳转页面的三种方法
- C++ 运算符优先级
- NET Framework 4.0 安装失败:安装时发生严重错误
- 我所知道的Ribbon库
- 汽车电子专业知识篇(二十)-深度解析CAN FD与传统CAN的差异
- android usb弹窗权限r,Android USB权限对话框永远不会出现
- B系列台达服务器解密码步骤,台达HMI解密,DOP-A解密,DOP-B解密,文件密码解密
- Bash脚本教程之变量
- css3优惠卷上方锯齿_css3怎么实现锯齿边框?