这道题的题意简单来说:就是在3D迷宫里找出口,也就是三维地图,需要用到三维数组

由于本人写代码极易出错,所以在输入三维数组的时候修改了c(column,即列)的值,重复定义了没看到==,后面改成定义成全局变量就没问题了=

除去粗心大意,这道题也可说是模板题了

这道题的代码dfs部分,写得比较清晰,比较适合初学者理解,因为我也是初学者==,感觉整理的还可哈哈hh~~

好了不多说,上代码叭

 

附上一张谷歌翻译:

 DFS搜索法:

  1 #include<iostream>
2 #include<queue>
3 #include<stdio.h>
4 #include<string.h>
5 using namespace std;
6
7 int l,r,c,vis[35][35][35];
8 char mp[35][35][35];
9
10
11 int fx[6]={1,0,-1,0,0,0};
12 int fy[6]={0,1,0,-1,0,0};
13 int fz[6]={0,0,0,0,1,-1};
14
15 struct node
16 {
17 int x,y,z;
18 int ant;
19 }now,next,s,e;
20
21 bool check(int x,int y,int z)
22 {
23 if(mp[x][y][z]!='#' && !vis[x][y][z] && x>=0 && x<l && y>=0 && y<r && z>=0 && z<c)
24 return 1;
25 return 0;
26 }
27
28 void bfs()
29 {
30 queue<node> q;
31 q.push(s);
32 while(q.size())
33 {
34 now=q.front();
35 q.pop();
36 // if(now.x==e.x && now.y==e.y && now.z==e.z)
37 if(mp[now.x][now.y][now.z]=='E') //找到终点E终止
38 {
39 return ;
40 }
41 else
42 {
43 for(int i=0;i<6;i++)
44 {
45 next.x = now.x+fx[i];//now.x替换了x
46 next.y = now.y+fy[i];
47 next.z = now.z+fz[i];
48 if(check(next.x,next.y,next.z))
49 {
50 vis[next.x][next.y][next.z]=1;
51 next.ant=now.ant+1;
52 q.push(next);
53 }
54 }
55 }
56 }
57 }
58
59 int main()
60 {
61 ios_base::sync_with_stdio(false);
62 cin.tie(0);
63
64 while(cin>>l>>r>>c && l+r+c)
65 {
66 memset(vis,0,sizeof(vis));
67 memset(mp,0,sizeof(mp));
68 for(int i=0;i<l;i++)
69 {
70 for(int j=0;j<r;j++)
71 {
72 for(int k=0;k<c;k++)
73 {
74 cin>>mp[i][j][k];
75 if(mp[i][j][k]=='S')
76 {
77 s.x=i;
78 s.y=j;
79 s.z=k;
80 s.ant=0;//直接存入全局变量的结构体
81 }
82 if(mp[i][j][k]=='E')
83 {
84 e.x=i;
85 e.y=j;
86 e.z=k;
87 }
88 }
89 }
90 }
91 vis[s.x][s.y][s.z]=1;
92 bfs();//找路
93 if(now.ant)
94 {
95 cout<<"Escaped in "<<now.ant<<" minute(s)."<<endl;
96 }
97 else
98 {
99 cout<<"Trapped!"<<endl;
100 }
101 }
102 return 0;
103 }

/*都在注释里咯,第一次多指教了~~*/

**

Dungeon Master 题解的更多相关文章

  1. POJ P2251 Dungeon Master 题解

    深搜,只不过是三维的. #include<iostream> #include<cstring> #include<cstdio> #include<algo ...

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

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

  3. POJ:Dungeon Master(三维bfs模板题)

    Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16748   Accepted: 6522 D ...

  4. POJ2251 Dungeon Master —— BFS

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

  5. 棋盘问题(DFS)& Dungeon Master (BFS)

    1棋盘问题 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的 ...

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

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

  7. poj 2251 Dungeon Master

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

  8. Dungeon Master 分类: 搜索 POJ 2015-08-09 14:25 4人阅读 评论(0) 收藏

    Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 20995 Accepted: 8150 Descr ...

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

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

  10. UVa532 Dungeon Master 三维迷宫

        学习点: scanf可以自动过滤空行 搜索时要先判断是否越界(L R C),再判断其他条件是否满足 bfs搜索时可以在入口处(push时)判断是否达到目标,也可以在出口处(pop时)   #i ...

随机推荐

  1. 【JS 逆向百例】DOM事件断点调试,某商盟登录逆向

    声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 逆向目标 目标:某商盟登录 ...

  2. (数据科学学习手札113)Python+Dash快速web应用开发——表单控件篇(下)

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 由我开源的先进Dash组件库feffery-antd-co ...

  3. Gin 框架之jwt 介绍与基本使用

    目录 一.JWT 介绍 二.JWT认证与session认证的区别 2.1 基于session认证流程图 2.2 基于jwt认证流程图 三. JWT 的构成 3.1 header : 头部 3.2 pa ...

  4. es从线上库导出数据并导入开发环境

    背景 来了个需求,需要从某个线上es库查询一些数据出来并进行大屏展示.问需求方有没有开发环境的es库,答:没有,说要不直连他们的线上库. 后面想想也行吧,业务方都这么说了,结果开网络的流程被打回了,理 ...

  5. 通过图片地址获取图片的base64,再通过base64获取二进制数据

    class Program { static void Main(string[] args) { string base64 = getFileBase64("D:\\Users\\Vat ...

  6. TienChin 渠道管理-权限分配

    添加权限 如果您不想手动添加可以使用我如下的SQL,但是有一个注意点就是 parent_id 是渠道管理菜单的主键 id 即可一键插入. INSERT INTO `TienChin`.`sys_men ...

  7. C++ Boost 函数与回调应用

    #include <iostream> #include <string> #include <boost\bind.hpp> using namespace st ...

  8. 从嘉手札<09-06-2023>

    时常会想 这个世界什么是长久的 我们走在时代的映照下,行色匆匆. 因为别人的悲欢而悲欢,因为自己的局限而挣扎. 晨而得志,暮而踌躇. 青楼梦好,难赋深情. 这个世界有很多的选择. 金钱,酒色,健康,相 ...

  9. AIX6.1修改时区/修改时间

    环境 AIX6.1 修改时间 格式:date -n mmddHHMMYY  #mm表示月分,dd表示日期,HH表示小时,MM表示分钟,YY表示年份. 例子:date -n 1204171622  #修 ...

  10. jwt 生成的token exp 的单位是秒

    public class Test { public static void main(String[] args) throws UnsupportedEncodingException { Dat ...