#12453. B - Minesweeper(扫雷)
B - Minesweeper(扫雷)
B - Minesweeper(扫雷)
时间限制:2 秒 内存限制:256 MB 分值:200 分
题目描述
给你一个大小为 H × W 的网格。
该网格由 H 个字符串描述,分别为 S1, S2, …, SH。
- 第
i个字符串Si的第j个字符表示格子 (i, j):'.'表示空白格'#'表示该格子上有地雷(炸弹)
现在 Dolphin 想知道: 每一个空白格周围(横向、纵向、斜向)共有多少个炸弹格?
这里“相邻”指的是:
- 上
- 下
- 左
- 右
- 左上、右上
- 左下、右下
一个格子最多有 8 个相邻格。
Dolphin 决定:
把网格中的每一个 '.' 替换为一个数字,
表示与该空白格相邻的炸弹格数量。
请输出替换后的网格。
输入格式
H W
S1
S2
...
SH
1 ≤ H, W ≤ 50- 每个
Si是由'.'和'#'构成的长度为W的字符串。
输出格式
输出替换后的 H 行字符串。
- 第
i行输出字符串Ti Ti[j]对应网格中(i, j)位置的最终字符- 若原本是
'#',则仍输出'#' - 若原本是
'.',则输出相邻炸弹数的数字字符
- 若原本是
样例输入 1
3 5
.....
.#.#.
.....
样例输出 1
11211
1#2#1
11211
例如,观察左上角格子 (1,1):
- 它旁边只有一个炸弹格(在
(2,2)), 因此'.'被替换为'1'。
样例输入 2
3 5
#####
#####
#####
样例输出 2
#####
#####
#####
可能不存在空白格,此时无需修改。
样例输入 3
6 6
#####.
#.#.##
####.#
.#..#.
#.##..
#.#...
样例输出 3
#####3
#8#7##
####5#
4#65#2
#5##21
#4#310