思路简单
#include<iostream>
#include<string>
using namespace std;
int n, m;
int x[8] = {-1, 0, 1, -1, 1, -1, 0, 1};
int y[8] = {-1, -1, -1, 0, 0, 1, 1, 1};
int main(){
cin >> n >> m;
char c[n][m];
string s;
for(int i = 0; i < n; i ++ ){
cin >> s;
for(int j = 0; j < m; j ++ ){
c[i][j] = s[j];
}
}
int ans[n][m];
for(int i = 0; i < n; i ++ ){
for(int j = 0; j < m; j ++ ){
if(c[i][j] == '*') ans[i][j] = -1;
else ans[i][j] = 0;
}
}
for(int i = 0; i < n; i ++ ){
for(int j = 0; j < m; j ++ ){
if(ans[i][j] == -1){
for(int k = 0; k < 8; k ++ ){
if(i + x[k] >= 0 && i + x[k] < n && j + y[k] >=0 && j + y[k] < m && ans[i + x[k]][j + y[k]] >= 0){
ans[i + x[k]][j + y[k]] ++ ;
}
}
}
}
}
for(int i = 0; i < n; i ++ ){
for(int j = 0; j < m; j ++ ){
if(ans[i][j] == -1) cout<<"*";
else cout<<ans[i][j];
}
cout<<endl;
}
}