蛇形数
Description:
将数列1.2,3,……,n*n,依次按蛇形方式存在二维数组A[1..n,1..n]中。
Input:
输入有多组数据,每组数据为一个整数n,( 0< n < 30 )以EOF结束。
Output:
按照样例格式打印出每组蛇形数,每个数据占有四个域宽,两个数据之间没有空格隔开。两组数据之间有一个换行。
Sample Input:
1 4 5
Sample Output:
1 1 2 6 7 3 5 8 13 4 9 12 14 10 11 15 16 1 2 6 7 15 3 5 8 14 16 4 9 13 17 22 10 12 18 21 23 11 19 20 24 25
#include<stdio.h>
int p[31][31];
int main()
{
int n,i,j,x,y,m,ca=0;
while(scanf("%d",&n)!=EOF)
{
if(ca) printf("\n");
ca++;
i=1;j=1;
m=1;
p[i][j]=1;
if(n>1)
{
for(x=2;x<=n;x++)
{
if(!(x&1))
{
p[i][++j]=++m;
for(y=2;y<=x;y++)
{
p[++i][--j]=++m;
}
}
else
{
p[++i][j]=++m;
for(y=2;y<=x;y++)
{
p[--i][++j]=++m;
}
}
}
for(x=n+1;x<=2*n-1;x++)
{
if(x&1)
{
p[i][++j]=++m;
for(y=x+1;y<=2*n-1;y++)
{
p[--i][++j]=++m;
}
}
else
{
p[++i][j]=++m;
for(y=x+1;y<=2*n-1;y++)
{
p[++i][--j]=++m;
}
}
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("%4d",p[i][j]);
}
printf("\n");
}
}
return 0;
}
为了明天所以选择坚定的执着今天。