#include<stdio.h>
int main()
{
int a[100][100]={0},n,sum,x=0,y=0,flag,ziranshu=1;
scanf("%d",&n);
flag=1; //flag代表着排列的顺序,偶数为从左下到右上
for(sum=0;sum<n;sum++)//对角线(含)左上半部分
{
if(flag%2!=0)
{
for(x=0;x<=sum;x++)//右上到左下
{
y=sum-x;
a[x][y]=ziranshu;
ziranshu++;
}
}
else if(flag%2==0)
{
for(y=0;y<=sum;y++)//左下到右上
{
x=sum-y;
a[x][y]=ziranshu;
ziranshu++;
}
}
flag++;
}
for(sum=n;sum<(2*n-1);sum++)//对角线右下部份
{
if(flag%2!=0)//右上到左下
{
for(x=(sum-n+1);x<n;x++)//右上到左下
{
y=sum-x;
a[x][y]=ziranshu;
ziranshu++;
}
}
else if(flag%2==0)
{
for(y=(sum+1-n);y<n;y++)//左下到右上
{
x=sum-y;
a[x][y]=ziranshu;
ziranshu++;
}
}
flag++;
}
int i,j; //打印过程
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d",a[i][j]);
if(j<n-1) printf(" ");
}
printf("\n");
}
return 0;
}
蛇形矩阵是一个n*n的矩阵,将整数1到n*n按照蛇形的顺序装入一个 n*n 的蛇形矩阵中,如样例所示分别为5阶和10阶蛇形矩阵。
输入格式:
只有一行,为一个整数n,代表蛇形矩阵的阶数,n的范围是1—100。
输出格式:
共n行,为蛇形矩阵。每行的每个元素用空格分隔,注意最后一个数的后面为换行符。
输入样例一:
5
输出样例一:
1 3 4 10 11
2 5 9 12 19
6 8 13 18 20
7 14 17 21 24
15 16 22 23 25
输入样例二:
10
输出样例二:
1 3 4 10 11 21 22 36 37 55
2 5 9 12 20 23 35 38 54 56
6 8 13 19 24 34 39 53 57 72
7 14 18 25 33 40 52 58 71 73
15 17 26 32 41 51 59 70 74 85
16 27 31 42 50 60 69 75 84 86
28 30 43 49 61 68 76 83 87 94
29 44 48 62 67 77 82 88 93 95
45 47 63 66 78 81 89 92 96 99
46 64 65 79 80 90 91 97 98 100