UVA10189 Minesweeper
题目描述
你是否曾玩过扫雷游戏?这是一个小巧的游戏,通常附带在某个操作系统中,但我们不太记得那个操作系统的名字。游戏的目标是找出所有地雷的位置,地雷分布在一个 $M \times N$ 的网格中。为了帮助你,游戏会在每个方块上显示一个数字,表示该方块周围有多少个地雷。例如,假设以下是一个 $4 \times 4$ 的网格,其中有 $2$ 个地雷(用 $\texttt{*}$ 字符表示):
$
\begin{aligned}
&\texttt{*...}
\\[-1mm] &\texttt{....}
\\[-1mm] &\texttt{.*..}
\\[-1mm] &\texttt{....}
\end{aligned}
$
如果我们根据规则在网格中放置提示数字,最终将得到:
$
\begin{aligned}
&\texttt{*100}
\\[-1mm] &\texttt{2210}
\\[-1mm] &\texttt{1*10}
\\[-1mm] &\texttt{1110}
\end{aligned}
$
正如你可能已经注意到的,每个方块最多有 $8$ 个相邻的方块。
输入格式
输入将由任意数量的网格组成。每个网格的第一行包含两个整数 $n$ 和 $m$($0 < n, m \le 100$),分别表示网格的行数和列数。接下来的 $n$ 行每行包含正好 $m$ 个字符,表示网格的内容。
每个安全的方块用 $\texttt{.}$ 字符表示,每个地雷方块用 $\texttt{*}$ 字符表示。当某个网格的第一行 $n = m = 0$ 时表示输入结束,该行不应处理。
输出格式
对于每个网格,你必须单独打印以下消息:
$\texttt{Field \#}x\texttt{:}$
其中,$x$ 代表网格的编号(从 $1$ 开始)。接下来的 $n$ 行应该包含将 $\texttt{.}$ 字符替换为该方块周围相邻地雷数的网格。在每个网格输出之间必须有一个空行。
---
Translated by User 735713.