#include <iostream> #include <vector> using namespace std; int main() { int n, m, sum; cin >> n >> m; // 行留出来首行和尾行,列留出来首列和尾列 // 多余的两行两列放'.'方便后续计算邻域的大雷 vector<vector<char>> arr(n+2, vector<char>(m+2, '.')); // 接收数据 for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) { cin>>arr[i][j]; } } // 开始扫雷 for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) { if(arr[i][j] == '*') cout << '*'; // 发现地雷,输出* else { // 未发现地雷,计算雷数 sum = 0; if(arr[i-1][j-1] == '*') sum++; // 左上 if(arr[i-1][j] == '*') sum++; // 上 if(arr[i-1][j+1] == '*') sum++; // 右上 if(arr[i][j-1] == '*') sum++; // 左 if(arr[i][j+1] == '*') sum++; // 右 if(arr[i+1][j-1] == '*') sum++; // 左下 if(arr[i+1][j] == '*') sum++; // 下 if(arr[i+1][j+1] == '*') sum++; // 右下 cout << sum; // 输出雷数 }; } cout << endl; } } // 64 位输出请用 printf("%lld")