思路简单

#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;
    }
        
    
}