Dungeon Master 题解
这道题的题意简单来说:就是在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 题解的更多相关文章
- POJ P2251 Dungeon Master 题解
深搜,只不过是三维的. #include<iostream> #include<cstring> #include<cstdio> #include<algo ...
- POJ 2251 Dungeon Master(地牢大师)
p.MsoNormal { margin-bottom: 10.0000pt; font-family: Tahoma; font-size: 11.0000pt } h1 { margin-top: ...
- POJ:Dungeon Master(三维bfs模板题)
Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16748 Accepted: 6522 D ...
- POJ2251 Dungeon Master —— BFS
题目链接:http://poj.org/problem?id=2251 Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total S ...
- 棋盘问题(DFS)& Dungeon Master (BFS)
1棋盘问题 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的 ...
- POJ 2251 Dungeon Master(3D迷宫 bfs)
传送门 Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 28416 Accepted: 11 ...
- poj 2251 Dungeon Master
http://poj.org/problem?id=2251 Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submis ...
- Dungeon Master 分类: 搜索 POJ 2015-08-09 14:25 4人阅读 评论(0) 收藏
Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 20995 Accepted: 8150 Descr ...
- POJ 2251 Dungeon Master --- 三维BFS(用BFS求最短路)
POJ 2251 题目大意: 给出一三维空间的地牢,要求求出由字符'S'到字符'E'的最短路径,移动方向可以是上,下,左,右,前,后,六个方向,每移动一次就耗费一分钟,要求输出最快的走出时间.不同L层 ...
- UVa532 Dungeon Master 三维迷宫
学习点: scanf可以自动过滤空行 搜索时要先判断是否越界(L R C),再判断其他条件是否满足 bfs搜索时可以在入口处(push时)判断是否达到目标,也可以在出口处(pop时) #i ...
随机推荐
- 【JS 逆向百例】DOM事件断点调试,某商盟登录逆向
声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 逆向目标 目标:某商盟登录 ...
- (数据科学学习手札113)Python+Dash快速web应用开发——表单控件篇(下)
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 由我开源的先进Dash组件库feffery-antd-co ...
- Gin 框架之jwt 介绍与基本使用
目录 一.JWT 介绍 二.JWT认证与session认证的区别 2.1 基于session认证流程图 2.2 基于jwt认证流程图 三. JWT 的构成 3.1 header : 头部 3.2 pa ...
- es从线上库导出数据并导入开发环境
背景 来了个需求,需要从某个线上es库查询一些数据出来并进行大屏展示.问需求方有没有开发环境的es库,答:没有,说要不直连他们的线上库. 后面想想也行吧,业务方都这么说了,结果开网络的流程被打回了,理 ...
- 通过图片地址获取图片的base64,再通过base64获取二进制数据
class Program { static void Main(string[] args) { string base64 = getFileBase64("D:\\Users\\Vat ...
- TienChin 渠道管理-权限分配
添加权限 如果您不想手动添加可以使用我如下的SQL,但是有一个注意点就是 parent_id 是渠道管理菜单的主键 id 即可一键插入. INSERT INTO `TienChin`.`sys_men ...
- C++ Boost 函数与回调应用
#include <iostream> #include <string> #include <boost\bind.hpp> using namespace st ...
- 从嘉手札<09-06-2023>
时常会想 这个世界什么是长久的 我们走在时代的映照下,行色匆匆. 因为别人的悲欢而悲欢,因为自己的局限而挣扎. 晨而得志,暮而踌躇. 青楼梦好,难赋深情. 这个世界有很多的选择. 金钱,酒色,健康,相 ...
- AIX6.1修改时区/修改时间
环境 AIX6.1 修改时间 格式:date -n mmddHHMMYY #mm表示月分,dd表示日期,HH表示小时,MM表示分钟,YY表示年份. 例子:date -n 1204171622 #修 ...
- jwt 生成的token exp 的单位是秒
public class Test { public static void main(String[] args) throws UnsupportedEncodingException { Dat ...