#include <iostream>
using namespace std;
char map[102][102];
int dir[8][2] = { //八个方向 从左上开始
{-1,-1},{0,-1},{1,-1},{1,0},{1,1},{0,1},{-1,1},{-1,0}
};
int n,m;
bool isN(int i)
{
if(i<n&&i>=0)
return true;
return false;
}
bool isM(int i)
{
if(i<m&&i>=0)
return true;
return false;
}
int count_weeper(int i,int j)
{
char c;
int d ,total, x ,y;;
if(map[i][j]=='*')
return -1;
else
{
for(total = 0,d = 0; d < 8; d ++)
{
x = i+dir[d][0];
y = j+dir[d][1];
if(map[x][y]=='*'&&(isN(x))&&isM(y))
total ++;
}
return total;
}
}
int main()
{
int i,j,temp;
int T = 1;;
while(1)
{
//scanf("%d%d",&n,&m);
cin>>n>>m;
if(m==0&&n==0)
break;
if(T>=2)printf("\n");
//fflush(stdin);
//for(i = 0; i < n;i++)
// gets(map[i]);
for(i = 0; i < n; i ++)
for(j = 0; j < m; j ++)
cin>>map[i][j];//scanf("%c",&map[i][j]);
printf("Field #%d:\n",T++);
for(i = 0;i < n;i++)
{
for(j = 0;j < m;j ++)
{
temp = count_weeper(i,j);
if(temp ==-1)
printf("*");
else
printf("%d",temp);
}
printf("\n");
}
if(T==1)printf("\n");
}
return 0;
}
posted on 2010-07-22 12:35
付翔 阅读(144)
评论(0) 编辑 收藏 引用 所属分类:
ACM 数据结构