讨论 / 超短的代码
huangyichen 2017-09-10 22:08:30
点我顶贴 收藏 删除
#include<cstdio>

#include<cstring>

int n,k;

int a[110][110];

char s[110][110];

int fx[8]={1,1,0,-1,-1,-1,0,1};

int fy[8]={0,1,1,1,0,-1,-1,-1};

int main()

{

int t=0;

while(1)

{

t++;

scanf("%d %d",&n,&k);

if(n==0&&k==0)return 0;

for(int i=1;i<=n;i++)

scanf("%s",s[i]+1);

printf("Field #%d:\n",t);

for(int i=1;i<=n;i++)

{

for(int j=1;j<=k;j++)

{

int ans=0;

if(s[i][j]=='*'){printf("*");continue;}

for(int l=0;l<8;l++)

{

int xx=i+fx[l],yy=j+fy[l];

// printf("%d %d\n",xx,yy);

if(xx<1||xx>n||yy<1||yy>k)continue;

if(s[xx][yy]=='*')

ans++;

}

printf("%d",ans);

}

printf("\n");

}

printf("\n");

}

}

#1 lijie201602@2017-09-10 22:23:27
回复 删除
#include<cstring>

#include<cstdio>

int dx[9]={0,-1,-1,-1,0,0,1,1,1},dy[9]={0,-1,0,1,-1,1,-1,0,1};

char st[110][110]; int a[110][110],n,m,x=0;

int main()

{

while(1)

{

scanf("%d %d",&n,&m);

if(n==0 && m==0) return 0;

memset(st,0,sizeof(st)); memset(a,0,sizeof(a));

for(int i=1;i<=n;i++) scanf("%s",st[i]+1);

for(int i=1;i<=n;i++)

for(int j=1;j<=m;j++)

{

if(st[i][j]=='*') { a[i][j]=-1; continue; }

for(int x=1;x<=8;x++)

{

int xx=i+dx[x],yy=j+dy[x];

if(xx>=1 && xx<=n && yy>=1 && yy<=m && st[xx][yy]=='*' ) a[i][j]++;

}

}

printf("Field #%d:\n",++x);

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][j]);

}

printf("\n");

}

printf("\n");

}

return 0;

}

查看更多回复
提交回复