题解 | #扫雷#
扫雷
https://www.nowcoder.com/practice/d5f277427d9a4cd3ae60ea6c276dddfd?tpId=290&tqId=540914&ru=%2Fpractice%2F2dbf0151eb71402e968a2a8e59092568&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking&sourceUrl=%2Fexam%2Foj%2Fta%3Fpage%3D1%26tpId%3D290%26type%3D290
#include <stdio.h> int main() { int arr[1000][1000]; int n = 0, m = 0; scanf("%d %d", &n, &m); for (int i = 0; i < n + 2; i++)//遍历数组 { for (int j = 0; j < m + 2; j++) { arr[i][j] = 0; } } char temp = 0; for (int i = 1; i <= n; i++)//符号换数字 { for (int j = 1; j <= m; j++) { scanf(" %c", &temp); if ('*' == temp) { arr[i][j] = -1; } else { arr[i][j] = 0; } } } for (int i = 1; i <= n; i++)//查找周围雷 { for (int j = 1; j <= m; j++) { if (arr[i][j] != -1) { for (int x = i - 1; x <= i + 1; x++) { for (int y = j - 1; y <= j + 1; y++) { if (arr[x][y] == -1) { arr[i][j]++; } } } } } } for (int i = 1; i <= n; i++)//输出 { for (int j = 1; j <= m; j++) { if (arr[i][j] != -1) { printf("%d", arr[i][j]); } else { printf("*"); } } printf("\n"); } return 0; }