描述
编写程序,将1到n*n之间的每个整数,从1开始,按照顺序依次填入到n阶蛇形方阵(具体见样例)。
输入
在一行中给出一个正整数N(<100)。
输出
输出N×N的蛇形方阵。每行N个数字,每个数字占5位。
输入样例 1
5
输出样例 1
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
输入样例 2
6
输出样例 2
1 2 6 7 15 16 3 5 8 14 17 26 4 9 13 18 25 27 10 12 19 24 28 33 11 20 23 29 32 34 21 22 30 31 35 36
#include<stdio.h>
int main(int argc,char const*argv[])
{
int n,s=1;
scanf("%d",&n);
int a[100][100]={0};
int i=0, j=0;
int ni,nj,k=1,z=1;
while(s<=n*n)
{ while(i>=0&&j<=n-1)
{a[i][j]=s;
ni=i,nj=j;
i--,j++;
s++;}
if(s<=n*n)
{ i=ni,j=nj;
if(z<n)
{i=0;
j=nj+k;
}
else
{ k=z;
j=n-1;
i=k+1-n;
}
z++;
while(j>=0&&i<=n-1)
{ a[i][j]=s;
ni=i,nj=j;
i++,j--;
s++;
}
if(s<=n*n)
{
if(z<n)
{i=ni+k;
j=0; }
else
{ k=z;
j=k+1-n;
i=n-1;
}
z++;
}
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%5d",a[i][j]);
}
printf("\n");
}
}
设置2个循环进行嵌套,进行衔接。z与k2个量进行代换