这道题的题意简单来说:就是在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. MySQL 中使用变量实现排名名次

    title: MySQL 中使用变量实现排名名次 date: 2023-7-16 19:45:26 tags: - SQL 高级查询 一. 数据准备: CREATE TABLE sql_rank ( ...

  2. 【主流技术】15 分钟掌握 Redis 的安装部署和基本特性

    目录 前言 一.Redis 概述 1.1Redis 是什么? 1.2Redis 能做什么? 1.3基础知识 二.Redis 安装与基本命令 2.1Windows 安装 方式一 方式二 2.2Linux ...

  3. 遇到一个bug,组件不更新内容

    解决办法 当v-if的值发生变化时,组件都会被重新渲染一遍.因此,利用v-if指令的特性,可以达到强制刷新组件的目的. <template> <comp v-if="upd ...

  4. 【奶奶看了都会】ChatGPT3.5接入企业微信,可连续对话

    1.连续对话效果 小伙伴们,这周ChatGPT放出大招,开放了GPT3.5的API.说简单点,就是提供了和ChatGPT页面对话一样模型的接口.而之前接的ChatGPT接口都是3.0,并不是真正的Ch ...

  5. 下载安装JDK 和 IntelliJ IDEA 和 ActiveMq

    wget http://yun.diandaxia.com/other/jdk-8u92-linux-x64.rpm rpm -ivh jdk-8u92-linux-x64.rpm wget http ...

  6. .NET Core开发实战(第25课:路由与终结点:如何规划好你的Web API)--学习笔记(下)

    25 | 路由与终结点:如何规划好你的Web API 自定义约束实现了路由约束接口,它只有一个 Match 方法,这个方法传入了 Http 当前的 httpContext,route,routeKey ...

  7. IDEA中使用ChatGPT

    IDEA中使用ChatGPT 在IDEA中安装ChatGPT插件,可以帮助写基础逻辑代码,提高工作效率和学习效率,有兴趣可以玩一下. 插件名为 Bito. 1. 什么是Bito Bito是一款在Int ...

  8. Java线上代码热修复的一些积累

    工具:Arthas 参考文章: https://blog.csdn.net/Admire_an/article/details/99768393 https://www.cnkirito.moe/ar ...

  9. Python 中Time 模块

    python的time内置模块是一个与时间相关的内置模块,很多人喜欢用time.time()获取当前时间的时间戳,利用程序前后两个时间戳的差值计算程序的运行时间,如下: 1.使用time.time() ...

  10. Java核心技术卷1:基础知识(原书第10版)

    本书为专业程序员解决实际问题而写,Java基础知识面覆盖很完整,可以帮助你深入了解Java语言和库.在卷I中,Horstmann主要强调基本语言概念和现代用户界面编程基础,深入介绍了从Java面向对象 ...