##这里是扫雷的个人题解##
#include <stdio.h>
int a[102][102] = {0};
int main(void) {
int n , m , c;
scanf("%d %d", &n, &m);
char b;
for (int i = 1; i <= n; i++) { //输入
for (int j = 0; j <= m; j++) {
scanf("%c", &b);
if (b == '*' )
a[i][j] = 1;
else
a[i][j] = 0;
//printf("a%d%d=%d ", i, j, a[i][j]);
}
}
for (int i = 1; i <= n; i++) { //判断
for (int j = 1; j <= m; j++) {
if (a[i][j] == 1)
printf("*");
else {
c = a[i - 1][j] + a[i][j - 1] + a[i + 1][j] + a[i][j + 1] + a[i - 1][j + 1] + a[i - 1][j - 1] + a[i + 1][j - 1] +
a[i + 1][j + 1];
printf("%d", c);
}
}
printf("\n");
}
return 0;
}
首先我看了下题解(。)发现大佬说小心边上,于是就想了下上下左右都多一行
注意1
最开始少打了一个
scanf("%d %d", &n, &m);
然后控制台就输入不进去。
本来是很简单的小错误,但是编译通过了我又双去思考循环哪里出问题了,最后直接交洛谷结果编 译失败了(。)然后从头就看见了这个小错误最后就可以输入了(但是最开始为啥控制台输不进去 就奇怪啊嘤)
注意2
最开始输出地雷个数的时候结果对不上,最后发现是a的值在输出的过程改变了,经过思考就重新定义了个值输出最后挺成功的
emm然后啊,然后没啥了