悬关求调
80pds
#include<bits/stdc++.h>
using namespace std;
char a[100][100];
int dx[8]= {-1,-1,0,1,1,1,0,-1},dy[8]= {0,1,1,1,0,-1,-1,-1};
int sum(int x,int y,int n,int m) {
int xx,yy,sum=0;
if(a[x][y]=='*') {
return 42;
}
for(int i=0; i<8; i++) {
xx=x+dx[i];
yy=y+dy[i];
if(xx>=0&&xx<m&&yy>=0&&yy<n) {
if(a[xx][yy]=='*') {
sum++;
}
}
}
return sum;
}
void print(int n) {
if(n==42) {
cout<<'*';
} else {
cout<<n;
}
}
int main() {
int n,m;
cin>>n>>m;
for(int i=0; i<n; i++)
for(int j=0; j<m; j++) {
cin>>a[i][j];
}
for(int i=0; i<n; i++) {
for(int j=0; j<m; j++) {
print(sum(i,j,n,m));
}
printf("\n");
}
return 0;
}