#6120. 扫雷(Minesweeper)
扫雷(Minesweeper)
扫雷(Minesweeper)
题目描述
小杨同学正在游玩经典游戏「扫雷」,他想自己生成一个「扫雷」的地图。
小杨同学希望生成的地图大小为 行 列,一共 个区块。区块行号为 ,列号为 。其中一些区块为雷区,其它区块不为雷区。
小杨同学指定了 个区块为雷区,而其它区块均不为雷区。小杨同学希望你帮忙计算非雷区的区块,每个区块与多少个雷区相邻?
我们定义区块相邻,当且仅当两个区块至少有一个公共顶点(也就是说对于不在地图边缘的区块,周围 8 个区块均与其相邻)。
输入格式
输入包含 行。
第一行,三个正整数 、 和 ,分别表示地图行数和列数,以及雷区数量。
接下来的 行,每行有 2 个整数,分别表示第 个雷区的行号和列号。
保证输入的雷区不重复。
输出格式
输出 行,每行 个字符(使用空格分割),对于第 行第 列,输出地图对应区块的信息:
- 如果为雷区,输出
*; - 如果不是雷区,输出其相邻雷区数量(输出 0 到 8 中的一个数字)。
样例输入 #1
3 4 4
1 1
1 3
2 4
3 2
样例输出 #1
* 2 * 2
2 3 3 *
1 * 2 1
样例解释 #1
根据输入,在 的地图上有 个雷区,分别是 、、 和 ,如输出样例中 * 所示,其它非雷区区块的相邻雷区数量可以直观看出。
数据范围
,。
输入的雷区必定在地图内且不重复,注意行号和列号均从 1 开始。
知识点与难度
本题涉及的知识点从属于 GESP 4级,难度等级:⭐⭐。
测试点分布
| Subtask | 分值 | 测试点编号 | 说明 |
|---|---|---|---|
| 0 | 10 | 1~2 | 样例 |
| 1 | 20 | 3~8 | 小规模 / 特殊: 全雷 / 特殊: 无雷 / 特殊: 单雷 |
| 2 | 15 | 9~11 | Hack: 地图一角全雷 / Hack: 最大地图边界 / Hack: 雷区聚集 |
| 3 | 30 | 12~20 | 中大规模 / 大规模 压力 |
| 4 | 25 | 21~25 | 随机 回归 |