非常简单的题目,之所以多次没有AC,估计是因为做UVa上的题目还没有什么感觉。
以下是我的代码:
#include<stdio.h>
#include<string.h>
int main()
{
const long maxn=200,xd[]={-1,-1,0,1,1,1,0,-1},yd[]={0,1,1,1,0,-1,-1,-1 };
long n,m,test=0;
while(scanf("%ld%ld",&n,&m)==2)
{
if(n==0&&m==0) break;
getchar();
test++;
char map[maxn][maxn]={0};
long a[maxn][maxn]={0};
memset(map,0,sizeof(map));
memset(a,0,sizeof(a));
for(long i=1;i<=n;i++)
{
for(long j=1;j<=m;j++)
scanf("%c",&map[i][j]);
getchar();
}
for(long i=1;i<=n;i++)
for(long j=1;j<=m;j++)
{
if(map[i][j]=='*') continue;
for(long k=0;k<8;k++)
{
long x=i+xd[k],y=j+yd[k];
if(x>=1&&x<=n&&y>=1&&y<=m&&map[x][y]=='*')
a[i][j]++;
}
}
if(test>1) putchar('\n');
printf("Field #%ld:\n",test);
for(long i=1;i<=n;i++)
{
for(long j=1;j<=m;j++)
if(map[i][j]=='*')
putchar('*');
else printf("%ld",a[i][j]);
putchar('\n');
}
}
return 0;
}
posted on 2010-01-06 20:38
lee1r 阅读(535)
评论(1) 编辑 收藏 引用 所属分类:
题目分类:基础/模拟