#include <iostream>
#include <vector>
using namespace std;
int main() {
int n,m;
cin>>n>>m;
vector<vector<char>> map = vector<vector<char>>(n+2,vector<char>(m+2));
for(int i=0;i<=n+1;++i){
for(int j=0;j<=m+1;++j){
map[i][j]='0';
}
}
for(int i=1;i<n+1;++i){
for(int j=1;j<m+1;++j){
cin>>map[i][j];
}
}
for(int i=1;i<n+1;++i){
for(int j=1;j<m+1;++j){
if(map[i][j]=='.'){
int cnt=0;
cnt+=map[i-1][j-1]=='*';
cnt+=map[i+1][j-1]=='*';
cnt+=map[i-1][j+1]=='*';
cnt+=map[i+1][j+1]=='*';
cnt+=map[i+1][j]=='*';
cnt+=map[i][j+1]=='*';
cnt+=map[i][j-1]=='*';
cnt+=map[i-1][j]=='*';
map[i][j]=cnt+'0';
}
}
}
for(int i=1;i<n+1;++i){
for(int j=1;j<m+1;++j){
cout<<map[i][j];
}
cout<<"\n";
}
}
就是额外在原来的二维数组包裹一圈,然后按原来遍历九宫格即可。

京公网安备 11010502036488号