代码奉上:
#include<bits/stdc++.h>
using namespace std;
int flag[8][8]={{-1,-1},{0,-1},{1,-1},{-1,0},{1,0},{-1,1},{0,1},{1,1}};
int n,m;
char s[10000][10000];
int main()
{
cin>>n>>m;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>s[i][j];
}
getchar();
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(s[i][j]!='*')
s[i][j]=0;
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(s[i][j]!='*')
{
for(int k=0;k<8;k++)
{
// cout<<i+flag[k][0]<<":"<<j+flag[k][1]<<endl;
if((i+flag[k][0]>=0&&i+flag[k][0]<=m)&&(j+flag[k][1]>=0&&j+flag[k][1]<=n))
if(s[i+flag[k][0]][j+flag[k][1]]=='*')
{
s[i][j]++;
}
}
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(s[i][j]!='*')
cout<<char(s[i][j]+'0');
else
cout<<'*';
}
cout<<endl;
}
}
可能有点乱