Problem
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
Input
本题有多组数据,每组数据由一个正整数N组成。(N不大于100)
Output
对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。
矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。
Sample Input
5
Sample Output
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
------------------------------
我的解法:
其实质是按某中顺序遍历数组
观察下面的数据:
值 位置 组号
1 00 0
----
2 10 1
3 01
----
4 20 2
5 11
6 02
----
7 30 3
8 21
9 12
10 03
----
11 40 4
12 31
13 22
14 31
15 04
看了这些数据,就应该知道规律了吧
---------------------
/*
此解答已通过TongJi编译并Accepted
Result Memory Time Language Date
Accepted 52k 4ms C++ 2006-05-07 19:29:56
zhouyinhui
*/
#include<stdio.h>
#define MAX 110
int main()
{
int n;
while(scanf("%d",&n) != EOF)
{
int arr[MAX][MAX] = {{0}};
int value = 0;
int i,a,b;
for(i=0; i<n; i++)
{
for(a=i,b=0; a>=0 && b<=i; a--,b++)
{
arr[a][b] = ++value;
}
}
for(a=0; a<n; a++)
{
for(int b=0; b<n; b++)
{
if(arr[a][b] != 0)
{
if(arr[a][b+1] != 0)
{
printf("%d ", arr[a][b]);
}
else//行尾
{
printf("%d", arr[a][b]);
}
}
}
printf("\n");
}
}
return 0;
}