每天OnLineJudge 之 “蛇形矩阵 ”

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


文章来源于 http://www.cnblogs.com/zhouyinhui 版权归原作者所有
阅读更多
文章标签: output input date c
个人分类: .NET
想对作者说点什么? 我来说一句

蛇形矩阵递归算法

2012年03月14日 636B 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭