#include<bits/stdc++.h>
using namespace std;
char c;int n,m,ms[101][101];
int main(){
cin>>n>>m;
for (int i=1;i<=n;++i){
for (int j=1;j<=m;++j){
scanf("%c",&c);
if (c=='*')ms[i][j]=-1;//输入时一起再输入map数组(ms)
else if (c=='?')ms[i][j]=1;
}
}
for (int i=1;i<=n;++i){
for (int j=1;j<=m;++j){
if (ms[i][j]==-1){//是地雷就跳过
continue;
}
else {// 不是地雷
int ans=0;
if (ms[i][j+1]=='*')++ans;
if (ms[i][j-1]=='*')++ans;
if (ms[i+1][j]=='*')++ans;
if (ms[i-1][j]=='*')++ans;
if (ms[i+1][j+1]=='*')++ans;
if (ms[i-1][j+1]=='*')++ans;
if (ms[i+1][j-1]=='*')++ans;
if (ms[i-1][j-1]=='*')++ans;
ms[i][j]=ans;
printf("[debug]x=%d y=%d ans=%d\n",i,j,ans);
}
}
}
for (int i=1;i<=n;++i){
for (int j=1;j<=m;++j){
if (ms[i][j]==-1)printf("*");
else printf("%d",ms[i][j]);
}
cout<<endl;
}
return 0;
}
求助!!!