每天OnLineJudge 之 “蛇形矩阵 ”

来源:互联网 发布:ui和程序员漫画 编辑:程序博客网 时间:2024/04/30 15:39

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

原创粉丝点击