20分RE,数组貌似没有越界
#include <iostream>
#define endl "\n"
using namespace std;
int main()
{
ios::sync_with_stdio(false);
int dx[]={1, 1, 1, 0, -1, -1, 1, 0};
int dy[]={1, 0, -1, -1, -1, 0, 1, 1};
int n, m;
cin >> n >> m;
char ch[n+2][m+2];
for (int i=1; i<=n; i++)
for (int j=1; j<=m; j++)
cin >> ch[i][j];
for (int i=0; i<=n+1; i++)
ch[i][0]=ch[i][m+1]='?';
for (int i=0; i<=m+1; i++)
ch[0][i]=ch[n+1][0]='?';
for (int i=1; i<=n; i++)
{
for (int j=1; j<=m; j++)
{
if (ch[i][j]=='*')
{
cout << '*';
continue;
}
int cnt=0;
for (int k=1; k<=8; k++)
if (ch[i+dx[k]][j+dy[k]]=='*')
cnt++;
cout << cnt;
}
cout << endl;
}
return 0;
}