签到题:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
char Map[200][200];
char a[200][200];
int n,m,t;
int dir[8][2]{
{-1,-1 },
{-1,0 },
{-1,1 },
{0,-1 },
{0,1 },
{1,-1 },
{1,0 },
{1,1 }
};
void search(){
int flag;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
t=1;
flag=0;
if(Map[i][j]=='?'){
//枚举8个方向
for(int k=0;k<8;k++){
int x=i+dir[k][0];
int y=j+dir[k][1];
if(x>=0&&x<n&&y>=0&&y<m&&Map[x][y]=='*') a[i][j]='0'+t,++t, flag=1;
}
if(!flag) a[i][j]='0';
}else a[i][j]=Map[i][j];
}
}
}
int main(){
scanf("%d %d",&n,&m);
for(int i=0;i<n;i++){
scanf("%s",Map[i]);
}
search();
for(int i=0;i<n;i++){
printf("%s\n",a[i]);
}
return 0;
}