博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA532 Dungeon Master
阅读量:5893 次
发布时间:2019-06-19

本文共 2411 字,大约阅读时间需要 8 分钟。

问题链接:。

题意简述:三维空间地牢(迷宫),每个点由'.'(可以经过)、'#'(墙)、'S'(起点)和'E'(终点)组成。移动方向有上、下、左、右、前和后6个方向。每移动一次耗费1分钟,求从'S'到'E'最快走出时间。不同L层,相同RC处是连通的。

问题分析:一个三维迷宫,典型的BFS问题。在BFS搜索过程中,走过的点就不必再走了,因为这次再走下去不可能比上次的步数少。

程序中,使用了一个队列来存放中间节点,但是每次用完需要清空。需要注意的一点,为了编程方便,终点'E'置为'.'。

需要说明的一点,用C++语言的输入比起C语言的输入,程序简洁方便。

AC的C++语言程序如下:

/* UVA532 Dungeon Master */#include 
#include
using namespace std;const int DIRECTSIZE = 6;struct direct { int dx; int dy; int dz;} direct[DIRECTSIZE] = {
{-1, 0, 0}, {1, 0, 0}, {0, -1, 0}, {0, 1, 0}, {0, 0, -1}, {0, 0, 1}};const int MAXN = 50;char cube[MAXN][MAXN][MAXN];struct node { int x, y, z, level;};int L, R, C;node start, e2;int ans;void bfs(){ queue
q; ans = -1; q.push(start); while(!q.empty()) { node front = q.front(); q.pop(); if(front.x == e2.x && front.y == e2.y && front.z == e2.z) { ans = front.level; break; } for(int i=0; i
nextx || nextx >= L) continue; nexty = front.y + direct[i].dy; if(0 > nexty || nexty >= R) continue; nextz = front.z + direct[i].dz; if(0 > nextz || nextz >= C) continue; if(cube[nextx][nexty][nextz] == '.') { cube[nextx][nexty][nextz] = '#'; node v; v.x = nextx; v.y = nexty; v.z = nextz; v.level = front.level + 1; q.push(v); } } }}int main(){ int i, j, k; char c; while(cin >> L >> R >> C) { if(L == 0 && R == 0 && C == 0) break; for(i=0; i
> c; cube[i][j][k] = c; if(c == 'S') { start.x = i; start.y = j; start.z = k; start.level = 0; } else if(c == 'E') { e2.x = i; e2.y = j; e2.z = k; cube[i][j][k] = '.'; } } } } bfs(); if(ans == -1) cout << "Trapped!\n"; else cout << "Escaped in "<< ans << " minute(s)." << endl; } return 0;}

转载于:https://www.cnblogs.com/tigerisland/p/7564451.html

你可能感兴趣的文章
Linux学习之CentOS(八)--Linux系统的分区概念
查看>>
主域控制器的安装与配置步骤与方法
查看>>
JavaScript---事件
查看>>
Android NDK入门实例 计算斐波那契数列一生成jni头文件
查看>>
c/c++性能优化--I/O优化(上)
查看>>
将HTML特殊转义为实体字符的两种实现方式
查看>>
jquery 保留两个小数的方法
查看>>
网站架构设计的误区
查看>>
iis 故障导致网站无法访问
查看>>
C++ 基础笔记(一)
查看>>
System.Func<>与System.Action<>
查看>>
asp.net开源CMS推荐
查看>>
csharp skype send message in winform
查看>>
MMORPG 游戏服务器端设计--转载
查看>>
《星辰傀儡线》人物续:“灭世者”、“疯狂者”、“叛逆者”三兄妹
查看>>
安装系统字体
查看>>
SILK 的 Tilt的意思
查看>>
Html学习笔记3
查看>>
批处理学习笔记8 - 深入学习For命令1
查看>>
微信支付开发(11) Native支付
查看>>