题解 | 扫雷
扫雷
https://www.nowcoder.com/practice/d5f277427d9a4cd3ae60ea6c276dddfd
#include <stdio.h>
int main() {
char x;
int n, m;
scanf("%d %d", &n, &m);
getchar(); // 清除输入缓冲区中的换行符
char a[n + 2][m + 2];
for (int i = 0; i < n + 2; i++) {
for (int j = 0; j < m + 2; j++) {
a[i][j] = '0';
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
scanf("%c", &x);
a[i][j] = x;
}
getchar();
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (a[i][j] == '*') {
continue;
} else {
int cnt = 0;
if (a[i - 1][j - 1] == '*') cnt++;
if (a[i - 1][j] == '*') cnt++;
if (a[i - 1][j + 1] == '*') cnt++;
if (a[i][j - 1] == '*') cnt++;
if (a[i][j + 1] == '*') cnt++;
if (a[i + 1][j - 1] == '*') cnt++;
if (a[i + 1][j] == '*') cnt++;
if (a[i + 1][j + 1] == '*') cnt++;
a[i][j] = '0' + cnt;
}
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
printf("%c", a[i][j]);
}
printf("\n");
}
return 0;
}
查看7道真题和解析