每天OnLineJudge 之 “蛇形矩陣 ”

weixin_34262482發表於2006-05-07

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

相關文章