蛇形矩阵(二)

蛇形矩阵

【问题描述】

蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。

 

要求

数据输入】本题有多组数据,每组数据由一个正整数N组成。(N不大于100)

 

数据输出】对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。

 

样例输入

5

 

样例输出

1 3 6 10 15

2 5 9 14

4 8 13

7 12

11

#include <iostream>
using namespace std;
int a[1010][1010]={0};         //将矩阵的初值置为0;
int main()
{
    int i=0,j=0,n;
    int k=0;
    int x,y;
    cin>>n;
    int t=1;
    a[0][0]=t;           //矩阵的第一行第一列是1;
    while(t<=n*(n+1)/2)        //上三角矩阵的元素个数为(n+1)*n/2;
    {
        a[++k][0]=++t;  //置数给每一行的第一个位置;
        i=k;
        j=0;
        while(i<n&&(j+1)<n&&!a[i-1][j+1])       //判断一下i是否超出了n的范围,因为上述的a[++k][0]=++t;其实将所有的第一列都执行了,这里的i<n只是截取我们所需要的而已;
            a[--i][++j]=++t;          //++ --都是前;
        
    }
    for(x=0;x<n;x++)
    {
        cout<<endl;
        for(y=0;y<n;y++)
        {
            if(a[x][y])
                cout<<a[x][y]<<" ";
        }
        cout<<endl;
    }
    return 0;
}

 

posted @ 2018-05-23 20:04  一去二三浪里小白龙  阅读(931)  评论(0编辑  收藏  举报
//增加一段JS脚本,为目录生成使用