蛇形填数

#include<stdio.h>
int main()
{
int i,k,t,n,a[100][100];
while(scanf("%d",&n)!=EOF)
{
for(k=0,t=0;k<n/2;k++)
{
for(i=k;i<n-k-1;i++)
a[i][n-k-1]=++t;
for(i=n-k-1;i>k;i--)
a[n-k-1][i]=++t;
for(i=n-k-1;i>k;i--)
a[i][k]=++t;
for(i=k;i<n-k-1;i++)
a[k][i]=++t;
}
if(n%2) a[k][k]=t+1;
for(k=0;k<n;k++)
{
for(i=0;i<n;i++)
printf("%-4d ",a[k][i]);
printf("\n");
}
}
return 0;
}

思路:转一圈为一个周期;转n/2圈;如果你是奇数的话,最后留下一个中间的,最后在补上

posted @ 2013-07-30 09:29  hpu张亚飞  阅读(159)  评论(0)    收藏  举报