题目网址:http://acm.fzu.edu.cn/problem.php?pid=1056
本题很简单,直接看代码吧。
#include<cstdio>
#include<iostream>
using namespace std;
char s[102][102];
int n,m;
int judge(int x,int y)
{
if(x<0||y<0||x>=n||y>=m)
return 0;
else if(s[x][y]=='*')
return 1;
else return 0;
}
int main()
{
while(~scanf("%d %d",&n,&m))
{
if(n==0&&m==0)break;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
cin>>s[i][j];
}
int sum=0;
for(int i=0;i<n;i++)
{
int sum=0;
for(int j=0;j<m;j++)
{
sum=0;
if(s[i][j]=='.')
{
if(judge(i,j+1))
sum++;
if(judge(i,j-1))
sum++;
if(judge(i+1,j))
sum++;
if(judge(i-1,j))
sum++;
if(judge(i+1,j+1))
sum++;
if(judge(i+1,j-1))
sum++;
if(judge(i-1,j+1))
sum++;
if(judge(i-1,j-1))
sum++;
s[i][j]=sum+'0';
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
printf("%c",s[i][j]);
}
printf("\n");
}
printf("\n");//一开始是PE
}
return 0;
}