PRELOADER

当前文章 : 《蓝桥杯刷题——蛇行矩阵》

12/2/2019 —— 

蓝桥杯刷题——蛇行矩阵

问题 1097: 蛇行矩阵

时间限制: 1Sec 内存限制: 64MB 提交: 1890 解决: 1110

题目描述

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

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

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

样例输入

5

样例输出

1 3 6 10 15
2 5 9 14
4 8 13
7 12
11

题目分析

分析出数字规律,只要记录每次加的数据是多少就可以很快输出了

#include<bits/stdc++.h>
using namespace std;
int main() {
    int n;
    while (cin>>n) {
        int beg=1;
        for(int i=1; i<=n; i++) {
            cout<<beg;
            int tmp = beg;
            for(int j=i+1; j<=n; j++) {
                tmp+=j;
                cout<<" "<<tmp;
            }
            cout<<endl;
            beg+=i;
        }
    }
    return 0;
}

通项公式解题

#include<bits/stdc++.h>
using namespace std;
int main() {
    int num;
    while (cin >> num) {
        for(int i=0; i<=num-1; i++) {
            for(int j=0; j<=num-1-i; j++) {
                cout<<(i*i+i+2*i*j+j*j+3*j)/2+1<<' ';
            }
            cout << endl;
        }
    }
    return 0;  
}