寻径指津
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
《崩坏:星穹铁道》中有一个“寻径指津”小游戏:角色在二维迷宫中只能选择一个方向直线滑行,直到撞到墙或越界才会停下。迷宫里还藏着会“升墙”的机关,路线规划稍有不慎就会堵死出路。

有一个 的迷宫。
- 起点为
S,终点为T; .表示空地,可通行;#表示墙,不可通行;*表示机关(初始可通行)。
你从 S 出发。每一步你必须选择一个方向(上 U、下 D、左 L、右 R),并沿该方向直线滑行,直到滑行到墙 # 或越界,角色停在撞墙或越界前的最后一个合法格子。
机关规则:在一次滑行过程中,角色 经过并离开 的所有 * 会在本次滑行结束后全部永久变为墙 #。已变为墙的格子在之后的滑行中与普通墙无异。
请你判断是否存在 不超过 6 步 的解法能从 S 出发最终停留在 T。
若存在,在所有长度 的方向串中,输出 步数最少 的一条,若存在多条步数最少的指令则输出其中 字典序最小 的一条;否则输出 -1。
输入格式
第一行包含三个整数 ( ,),分别表示迷宫行数、列数以及墙和机关的数量。
第二行包含四个整数 ,分别表示起点 S 与终点 T 的行列坐标(行号从 到 ,列号从 到 )。
接下来 行,每行三个元素:
x y type
其中:
- 表示一个特殊格子的行列坐标;
type取值为#和*,分别代表墙、机关;- 保证起点和终点不为特殊格子,两个特殊格子的坐标不重叠。
- 不保证起点和终点不重叠。
输出格式
若不存在 步的解法,输出一行 -1。
否则输出一行,给出一条满足要求的方向串(仅由 D, L, R, U 组成),其长度 ,并且在所有可行方案中字典序最小。
6 8 25
5 4 1 6
1 1 #
1 2 #
1 3 #
1 4 #
1 5 #
1 7 #
1 8 #
2 1 #
2 8 #
3 1 #
3 5 *
3 8 #
4 1 #
4 4 *
4 8 #
5 1 #
5 8 #
6 1 #
6 2 #
6 3 #
6 4 #
6 5 #
6 6 #
6 7 #
6 8 #
UDRLU
解释 #1
迷宫如下:
#####T##
#......#
#...*..#
#..*...#
#..S...#
########
这组样例下序列 UDRLU 的执行情况:
U:从 上滑到 ,触发机关 永久变为墙。D:下滑回到 ,停在墙前。R:右滑到 ,触发机关 永久变为墙。L:左滑到 ,停在墙前。U:上滑到 ,停在边界前。
所以 UDRLU 是一条 步内可行解。
5 6 5
1 1 2 2
1 4 #
2 4 #
3 4 *
3 5 #
5 3 *
-1