测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A1732. 地下城主

编程题 普及/提高-
知识点

题目描述

这题是一个三维的迷宫题目,其中用 . 表示空地,# 表示障碍物,S 表示起点,E 表示终点,求从起点到终点的最小移动次数,解法和二维的类似,只是在行动时除了东南西北移动外还多了上下。可以上下左右前后移动,每次都只能移到相邻的空位,每次需要花费一分钟,求从起点到终点最少要多久。

输入格式

前三个数,分别表示层数、一个面的长和宽,后面是每层的平面图。

输出格式

如果能够到达,则按 Escaped in ans minute(s). 的格式输出,其中的 $ans$ 是实际的最小移动次数。
如果无法到达,则输出 Trapped!

输入输出样例

输入 #1
3 4 5
S....
.###.
.##..
###.#
#####
#####
##.##
##...
#####
#####
#.###
####E
输出 #1
Escaped in 11 minute(s).
输入 #2
1 3 3
S##
#E#
###
输出 #2
Trapped!

说明/提示

对于题目给出数据的含义就是输入 $l,r,c(1 \leq l,r,c \leq 100)$,分别代表迷宫有 $l$ 层,每层长宽分别是 $c,r$。对于数据以可以这样移动:

$(1,1,1)->(1,1,2)->(1,1,3)->(1,1,4)->(1,1,5)->(1,2,5)->(1,3,5)->(1,3,4)->(1,4,4)->(2,4,4)->(2,4,5)->(3,4,,5)$

共 $11$ 步就可以到达终点 对于数据二明显不能到达,则输出 $Trapped!$

这题用 $BFS$ 解,每次去队首元素,如果是终点则输出结果移动的次数,否则,从该点开始分别向东南西北上下移动(如果可以走的话)并继续搜,如果到队列为空还没搜到解法,则说明无解。
上一题 去做题 下一题