返回首页 返回题库

扫雷

C++ 简单 GESP四级真题 #数组#二维遍历

题目描述

题面描述

小杨同学正在游玩经典游戏「扫雷」,他想自己生成一个「扫雷」的地图。

小杨同学希望生成的地图大小为行列,一共个区块。

区块行号为,列号为。

其中一些区块为雷区,其它区块不为雷区。

小杨同学指定了个区块为雷区,而其它区块均不为雷区。小杨同学希望你帮忙计算非雷区的区块,每个区块与多少个雷区相邻?

我们定义区块相邻,当且仅当两个区块至少有一个公共顶点(也就是说对于不在地图边缘的区块,周围8个区块均与其相邻)。

输入格式

输入包含行。

第一行,三个正整数,和,分别表示地图行数和列数,以及雷区数量。

接下来的行,每行有2个整数,分别表示第个雷区的行号和列号。

保证输入的雷区不重复。

输出格式

输出行,每行个字符(使用空格分割),对于第行第列,输出地图对应区块的信息:

  • 如果为雷区,输出 *;
  • 如果不是雷区,输出其相邻雷区数量(输出0到8中的一个数字)。

样例1

输入:

3 4 4
1 1
1 3
2 4
3 2

输出:

* 2 * 2 
2 3 3 * 
1 * 2 1 

样例解释1

根据输入,在的地图上有4个雷区,分别是,,和,如输出样例中 * 所示,其它非雷区区块的相邻雷区数量可以直观看出。

样例2

输入:

3 3 1
2 2

输出:

1 1 1 
1 * 1 
1 1 1 

数据范围

。

输入的雷区必定在地图内且不重复,注意行号和列号均从1开始。

时间限制

1.0 s

内存限制

512.0 MB

💡 查看提示(先自己想一想再看)
考察二维数组的遍历、边界判断、模拟思想。可以用二维数组标记雷区位置,再遍历每个非雷区统计周围8个方向的雷数,注意行号列号从1开始可以转换为0开始方便数组操作,避免边界越界。
⚙ 开始做这道题 0 人做过 · 0 收藏 · 15 浏览

讨论(0)