A5442 | 午枫的双向奔赴2
时间限制2s
内存限制256MB
通过 / 提交0/0
题目描述
有一个 $n$ 行 $n$ 列的方格迷宫,每个格子要么是空地,要么是有障碍物的格子。方格迷宫中第 $i$ 行第 $j$ 列的格子记作 $(i, j)$。
小午和小枫分别站在两个不同的空地上。第 $i$ 行第 $j$ 列的格子的情况通过一个字符 $s_{i,j}$ 给出,具体如下:
- 如果 $s_{i,j}$ 是
- 如果 $s_{i,j}$ 是
- 如果 $s_{i,j}$ 是
这个迷宫中小午和小枫被施加了束缚魔法,此魔法的效果是:
两个人需要同时选择同一个方向(上、下、左、右),之后两人都会尝试向该方向移动一格。如果移动后的格子存在是空地,则移动过去,否则原地不动。
请你求出,为了让小午和小枫通过反复移动最终汇合到同一个格子,所需的最小移动次数。如果无论如何都无法让他们汇合,则输出 $-1$。
小午和小枫分别站在两个不同的空地上。第 $i$ 行第 $j$ 列的格子的情况通过一个字符 $s_{i,j}$ 给出,具体如下:
- 如果 $s_{i,j}$ 是
P,则 $(i, j)$ 是空地,并且小午和小枫其中一人在这个格子。- 如果 $s_{i,j}$ 是
.,则 $(i, j)$ 是空地。- 如果 $s_{i,j}$ 是
#,则 $(i, j)$ 是有障碍物的格子。这个迷宫中小午和小枫被施加了束缚魔法,此魔法的效果是:
两个人需要同时选择同一个方向(上、下、左、右),之后两人都会尝试向该方向移动一格。如果移动后的格子存在是空地,则移动过去,否则原地不动。
请你求出,为了让小午和小枫通过反复移动最终汇合到同一个格子,所需的最小移动次数。如果无论如何都无法让他们汇合,则输出 $-1$。
输入格式
第一行输入一个整数 $n$ $(2\leq n\leq 60)$ ,表示方格的大小。
接下来输入 $n$ 行,每行 $n$ 个字符 $s_{i,j}$ $(s_{i,j}\in \{$
接下来输入 $n$ 行,每行 $n$ 个字符 $s_{i,j}$ $(s_{i,j}\in \{$
P ,. ,# $\})$ ,表示第 $i$ 行第 $j$ 列的情况。保证 P 恰好有 $2$ 个。输出格式
输出一个整数,表示小午和小枫汇合的最小移动次数。
输入输出样例
输入 #1
5 ....# #..#. .P... ..P.. ....#
输出 #1
3
假设最开始在 $(3, 2)$ 的为小午,在 $(4, 3)$ 的为小枫。可以按如下方式用 $3$ 次操作让两人汇合:
- 选择左方向。小午移动到 $(3, 1)$,小枫移动到 $(4, 2)$。
- 选择上方向。小午不动, 小枫移动到 $(3, 2)$。
- 选择左方向。小午不动, 小枫移动到 $(3, 1)$。
- 选择左方向。小午移动到 $(3, 1)$,小枫移动到 $(4, 2)$。
- 选择上方向。小午不动, 小枫移动到 $(3, 2)$。
- 选择左方向。小午不动, 小枫移动到 $(3, 1)$。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?