#include
using namespace std;
int n = 0 , m = 0;
int ans = 0;
int main()
{
scanf("%d%d",&n,&m);
char excel[n][m];
for (int i = 0 ; i < n ; i++)
{
for (int j = 0 ; j < m ; j++)
{
scanf("%c",&excel[i][j]);
}
}
for (int i = 0 ; i < n ; i++)
{
for (int j = 0 ; j < m ; j++)
{
if (excel[i][j] == '*')
{
printf("*");
continue;
}
if (i-1 != -1)
{
if (excel[i-1][j] == '*') ans++;
}
if (i-1 != -1 && j-1 != -1)
{
if (excel[i-1][j-1] == '*') ans++;
}
if (j-1 != -1)
{
if (excel[i][j-1] == '*') ans++;
}
if (j-1 != -1 && i+1 != n)
{
if (excel[i+1][j-1] == '*') ans++;
}
if (i+1 != n)
{
if (excel[i+1][j] == '*') ans++;
}
if (i+1 != n && j+1 != m)
{
if (excel[i+1][j+1] == '*') ans++;
}
if (j+1 != m)
{
if (excel[i][j+1] == '*') ans++;
}
if (i-1 != -1 && j+1 != m)
{
if (excel[i-1][j+1] == '*') ans++;
}
printf("%d",ans);
ans = 0;
}
printf("\n");
}
return 0;
}
#include<iostream>
using namespace std;
int main()
{
char a[105][105];
int b[105][105],n,m,i,j;//数组定义(二维)
cin>>n>>m;//读入行、列
for(i=1;i<105;i++)
for(j=1;j<105;j++)
b[i][j]=0;//给数组赋值为0
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
cin>>a[i][j];
if(a[i][j]=='*')//判断:如果是地雷
{
b[i+1][j+1]++;
b[i+1][j-1]++;
b[i+1][j]++;
b[i][j+1]++;
b[i][j-1]++;
b[i-1][j]++;
b[i-1][j+1]++;
b[i-1][j-1]++;//相邻的八个格子都+1
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(a[i][j]=='*')
cout<<"*";//如果是地雷(*) 原样输出
else
cout<<b[i][j];//否则输出数字
}
cout<<endl;
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
bool a[105][105];
int main()
{
memset(a,0,sizeof(a));
int n,m;
char tmp;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>tmp;
if(tmp=='*') a[i][j]=1;
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(a[i][j]==1) printf("*");
else
{
printf("%d",a[i+1][j+1]+a[i+1][j-1]+a[i+1][j]+a[i][j+1]+a[i][j-1]+a[i-1][j+1]+a[i-1][j]+a[i-1][j-1]);
}
}
printf("\n");
}
return 0;
}