题目 为了除去对i-1,j-1的特判。可以从1-n读入在循环找地雷过程中找到地雷则将周围的8格全都加一,然后输出时从1-n输出即可。 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 110; int main() { // freopen("in.in","r",stdin);//从in.in文件中读入数据 // freopen("out.out","w",stdout);//将结果输出到out.out文件中 int n,m,a[N][N]; cin >> n >> m; char ch[N][N]; memset(ch,'0',sizeof(ch)); memset(a,0,sizeof(a)); for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { cin >> ch[i][j]; if(ch[i][j] == '*'){ a[i-1][j-1]++; a[i-1][j]++; a[i-1][j+1]++; a[i][j-1]++; a[i][j+1]++; a[i+1][j-1]++; a[i+1][j]++; a[i+1][j+1]++; } } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { if(ch[i][j] == '*') printf("*"); else printf("%d",a[i][j]); } printf("\n"); } return 0; }