题目描述
4 4 *... .... .*.. .... 3 5 **... ..... .*... 0 0
Field #1: *100 2210 1*10 1110 Field #2: **100 33200 1*100
#include <iostream>
#include <cstring>
using namespace std;
int dir[8][2] = {{-1,0},{0,1},{1,0},{0,-1},{-1,-1},{-1,1},{1,1},{1,-1}};
int main()
{
int num = 1;
int m,n;
cin>>m>>n;
while(m != 0 && n != 0)
{
char data[m][n];
int a[m][n];
for(int i = 0; i < m; i++)
for(int j = 0; j < n; j++)
cin>>data[i][j];
memset(a,0,sizeof(a));
int m1 = m-1;
int n1 = n-1;
while(m1 != 0 || n1 != 0)
{
if(data[m1][n1] != '*')
{
for(int i = 0; i<8; i++)
{
int x = m1+dir[i][0];
int y = n1+dir[i][1];
if( x > -1 && y > -1 && y < n && x < m)
{
if(data[x][y] == '*' && data[m1][n1] == '.')
a[m1][n1]++;
}
}
}
if(n1-1 != -1)
n1--;
else
{
n1 = n-1;
m1--;
}
}
cout<<"Field #"<<num<<":"<<endl;
for(int i = 0; i < m; i++)
{
for(int j = 0; j < n; j++)
{
if(data[i][j] == '*')
cout<<"*";
else
cout<<a[i][j];
}
cout<<endl;
}
cout<<endl;
num++;
cin>>m>>n;
}
return 0;
}