1、题目类型:模拟、迷宫、BFS。

2、解题思路:BFS的三维Maze[][][]应用,其每步存在前后、左右、上下6个方向的选择。

3、注意事项:BFS入队列的条件判断。

4、实现方法:

#include<iostream>
#include<queue>
using namespace std;

struct Point
{
int x,y,z;
int step;
};

Point start,end;
int dir[6][3]={{-1,0,0},{1,0,0},{0,-1,0},
{0,1,0},{0,0,-1},{0,0,1}};
int x,y,z;
char Maze[50][50][50];
void Init()
{
int i,j,k;
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
for(k=0;k<z;k++)
{
cin>>Maze[i][j][k];
if(Maze[i][j][k]=='S')
{
start.x=i;
start.y=j;
start.z=k;
}
if(Maze[i][j][k]=='E')
{
end.x=i;
end.y=j;
end.z=k;
}
}
}
}
}

void BFS()
{
queue<Point> Q;
int vis[50][50][50];
memset(vis,0,sizeof(vis));
start.step=0;
Q.push(start);
vis[start.x][start.y][start.z]=1;
while(!Q.empty())
{
Point p=Q.front();
Q.pop();
if(p.x==end.x&&p.y==end.y&&p.z==end.z)
{
cout<<"Escaped in "<<p.step<<" minute(s)."<<endl;
return ;
}
for(int i=0;i<6;i++)
{
int x1,y1,z1;
x1=p.x+dir[i][0];
y1=p.y+dir[i][1];
z1=p.z+dir[i][2];
if(x1>=0&&x1<x&&y1>=0&&y1<y&&z1>=0&&z1<z&&!vis[x1][y1][z1]&&Maze[x1][y1][z1]!='#')
{
Point tmp;
tmp.x=x1;
tmp.y=y1;
tmp.z=z1;
tmp.step=p.step+1;
vis[x1][y1][z1]=1;
Q.push(tmp);
}
}
}
cout<<"Trapped!"<<endl;
return ;
}

int main()
{
while(cin>>x>>y>>z)
{
if(x==0&&y==0&&z==0)
break;
Init();
BFS();
}
return 0;
}

转载于:https://www.cnblogs.com/yongze103/archive/2010/08/20/1804948.html

Dungeon Master--POJ 2251相关推荐

  1. B - Dungeon Master POJ - 2251

    B - Dungeon Master POJ - 2251 题目: 逃离3D迷宫,n <=30 首先是dfs,算一下最坏情况共30层,每层有30*30的循环, 复杂度 3030*30 显然严重爆 ...

  2. (广搜)Dungeon Master -- poj -- 2251

    链接: http://poj.org/problem?id=2251 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2137 ...

  3. Dungeon Master POJ - 2251 BFS

    一.内容 题意:给定一个3D的图,你能走6个方向,问从起点到终点最少的步数. 二.思路 bfs搜索一下. 三.代码 #include <cstdio> #include <cstri ...

  4. Dungeon Master POJ - 2251

    走迷宫模板变种 三维BFS 就是二维bfs的判断多写一点,多写一个dz数组 #include <cstdio> #include <iostream> #include < ...

  5. (POJ - 2251)Dungeon Master(bfs)

    题目链接:2251 -- Dungeon Master (poj.org) 这是一个典型的bfs迷宫问题,只不过是三维的,唯一需要注意的就是输入要用cin,不要用scanf,因为有换行,其他没什么了, ...

  6. POJ 2251 Dungeon Master(三维BFS求最短路径)

    3D dungeon 时间限制: 1 Sec  内存限制: 128 MB 提交: 2  解决: 2 [提交][状态][讨论版][命题人:201506020829][Edit] [TestData] 题 ...

  7. POJ 2251 - Dungeon Master + Python实现

    原题连接:2251 -- Dungeon Master 参考资料:POJ 2251 - Dungeon Master | 眈眈探求 问题:从起点S,经上下左右前后行走,到达目的地E点,返回所经过的路径 ...

  8. Dungeon Master(poj2251,bfs)

    http://poj.org/problem?id=2251 http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=15203 Dun ...

  9. 1248:Dungeon Master/P2360 地下城主

    1248:Dungeon Master 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 10942     通过数: 4388 [题目描述] 这题是一个三维的迷宫题 ...

  10. Dungeon Master 地下城大师(BFS进阶)

    题目链接:2251 -- Dungeon Master 知道你看不懂题(手动滑稽):友情链接. 题意:找到从S到E的最少步数的路径,输出该步数,不过有意思的是这个类似迷宫问题不是二维的,是一个三维迷宫 ...

最新文章

  1. 人工智能和区块链的融合
  2. 赛题出简单了,让我们情何以堪?
  3. JavaScript学习笔记(8)——JavaScript语法之运算符
  4. 存储过程测试dbms、lpad与chr(10)
  5. java baen转json 已经 json 转java bean 优秀博客分享
  6. MRS,MSR指令详解
  7. java楼宇报警器_智能楼宇包含哪些安防子系统
  8. VB语言写CRC16校验
  9. git与乌龟壳git
  10. 力扣(718.1143)补9.12
  11. 美国零售业初创公司排名前5位的软件开发公司
  12. 【Linux】Linux安装
  13. 【信息技术】【2018】利用单摄像机系统进行航向估计的车辆跟踪
  14. 移植opencv到嵌入式arm详细过程
  15. 2022秋季 电影&书单
  16. [转载]三联生活周刊:12万亿财富疯狂膨胀人人都是股神
  17. CSDN博文大赛赛况简报
  18. linux nc命令使用详解
  19. echarts叠加3D立体柱状图
  20. 中移动“屠龙”术一刀封喉 免费WAP祸福莫名 【时评】

热门文章

  1. @ConfigurationProperties放在类上跟放在方法上有什么区别
  2. delete、drop、truncate的区别和用法
  3. cnpm发布包后下载失败,Install fail! Error: GET https://registry.npm.taobao.org/xxx response 404 status
  4. B站崩了!除了看段子,这个问题应该值得我们关注
  5. swift 字符串——swift 学习(一)
  6. 【Proteus仿真】利用加法计数器74XX160的级联实现2位计数
  7. mysql什么是外循环和内循环_内循环与外循环
  8. mac安装win10_VMware虚拟机如何安装Win10系统
  9. 北京交通大学计算机学院硕士导师,北京交通大学计算机与信息技术学院研究生导师:郎丛妍...
  10. 【敏捷】敏捷开发的至理名言