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.