AT_past202309_k マス目

题目描述

给定一个 $N \times N$ 的方格。用 $(i,j)$ 表示第 $i$ 行(自上往下)第 $j$ 列(自左往右)的方格。 每个方格有如下四种状态之一:起点、目标、通道和坑洞。第 $(i,j)$ 个方格的状态用 $S_{i,j}$ 表示。 - `S` 表示该方格是起点。恰好有一个起点。 - `G` 表示该方格是目标。至少有一个目标点。 - `.` 表示该方格是通道。 - `X` 表示该方格是坑洞。 请对于 $k=1,2,\dots,N-1$ 解决如下问题。 你最初位于起点。然后,你可以重复进行如下操作: - 选择一个方向(上、下、左、右),连续移动 $k$ 格到该方向。 你在执行该操作时,不能经过坑洞方格,也不能移动出网格之外。 问你是否能在某次操作结束时恰好位于目标方格上,如果可以,输出所需的最少操作次数,否则输出 $-1$。 注意,中间经过目标方格但不是操作结束时不计为到达目标。

输入格式

输入从标准输入读入,格式如下: > $N$ > $S_1$ > $S_2$ > $\vdots$ > $S_N$

输出格式

输出 $N-1$ 行。 对于 $1 \le i \le N-1$,第 $i$ 行输出 $k=i$ 时到达目标方格所需的最小操作数,如果无法到达则输出 $-1$。

说明/提示

### 样例解释 1 对于 $k=2$,你可以通过两步操作,到达目标。 - 往下移动,从 $(1,1)$ 到 $(3,1)$。 - 往右移动,从 $(3,1)$ 到 $(3,3)$。 只进行一次移动,不能到达目标,所以答案是 $2$。 注意,对于 $k=3$,如下移动方式不可行: - 往右移动,从 $(1,1)$ 到 $(1,4)$。 由于此移动路径会经过 $(1,2)$,而这里是坑洞,所以该操作不允许。 ### 数据范围 - $1 \le N \le 1500$ - $S_{i,j}$ 为 `S`、`G`、`.` 或 `X` - 恰好有一个 $(i,j)$ 使得 $S_{i,j}=S$ - 至少有一个 $(i,j)$ 使得 $S_{i,j}=G$ - $N$ 为整数。 由 ChatGPT 5 翻译