蛇形填数
#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圈;如果你是奇数的话,最后留下一个中间的,最后在补上

浙公网安备 33010602011771号