#CF2041D. 醉酒迷宫
醉酒迷宫
D. 醉酒迷宫
每测试点时间限制: 秒
每测试点内存限制: MB
(图片由 ChatGPT 4o 生成)
你得到一个二维迷宫,其中有起点和终点。你的任务是从起点走到终点,找到最快的方式。最快的方式即步数最少,一步是向左、右、上、或下移动一格。当然,你不能穿过墙壁。
但有一个陷阱:如果你在同一个方向连续走超过三步,就会失去平衡并摔倒。因此,禁止在同一个方向连续走超过三步。
允许向右走三步,然后向左走一步,然后再向右走三步。这样和直接向右走五步的效果相同,但速度更慢(步数更多)。
输入
第一行包含两个整数 和 ,表示迷宫的高度和宽度。
接下来是迷宫的 ASCII 表示:
#表示墙.表示空地S和T表示起点和终点
数据范围:
- 字符只包含
. # S T,有且仅有一个S和一个T - 迷宫的外边界全是
#(墙壁)
输出
从起点到终点的最少步数,如果无法到达则输出 。
示例
输入 1:
7 12
############
#S........T#
#.########.#
#..........#
#..........#
#..#..#....#
############
输出 1:
15
输入 2:
5 8
########
#......#
#.####.#
#...T#S#
########
输出 2:
14
输入 3:
5 8
########
#.#S...#
#.####.#
#...T#.#
########
输出 3:
-1