思路:

1 3 6 10

2 5 9

4 8

7

第一行[1 3 6 10]

第二行是 去掉第一行的第一列,然后将后面的[3 6 10]分别减1得到的。

代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int N;
    cin >> N;

    vector<int> arr;
    arr.push_back(1);

    for (int i = 0; i < N-1;i++){
        arr.push_back(arr[i] + i + 2);
    }

    for (int i = 0; i < N; i++){
        for (int j = i; j < N;j++){
            cout << arr[j] - i << " ";
        }
        cout << endl;
    }

    return 0;
}