题解 | #扫雷#
扫雷
https://www.nowcoder.com/practice/d5f277427d9a4cd3ae60ea6c276dddfd
#include <stdio.h>
int main()
{
int n, m;
scanf("%d%d", &n, &m);
char arr[1000][1000]={0};//如果这里写arr[n+2][m+2]的话不可以直接初始化,如果不初始化那么多的两行随机生成字符,有可能随机为'*',所以必须初始化!!!
for (int i = 1; i <= n; i++)//赋值内圈(去掉外围一圈)
{
for (int j = 1; j <= m; j++)
{
scanf(" %c ", &arr[i][j]);
}
}
for (int i = 1; i <= n; i++)//遍历内圈所有元素
{
for (int j = 1; j <= m; j++)//遍历内圈所有元素
{
if (arr[i][j] != '*')//判断是否为*,如果不是,就计算周围有多少个(九宫格计算)
{
int count = 0;//遍历该元素九宫格,如果是count++。
for (int q = i - 1; q <= i + 1; q++)
{
for (int p = j - 1; p <= j + 1; p++)
{
if (arr[q][p] == '*')
count++;
}
}
printf("%d",count);//打印周围有几个雷
}
else {
printf("*");//打印雷
}
}
printf("\n");
}
return 0;
}

查看11道真题和解析