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;
}