根据观察可以发现,元素 = 上一元素 + (i++)
// 1 3 6 10 15
// 2 5 9 14
// 4 8 13
// 7 12
// 11
// 观察第一行,3 = 1 + 2
// 也可以写为
int i = 2, 3 = 1 + (i++);
// 同理
6 = 3 + (i++);
// 那么现在只要推出每行第一个元素以及i的初始值就可以写出代码了
不难发现,行首元素也存在规律
- 第1行:1
- 第2行:1+1
- 第3行:1+1+2
也可以写成 pre + (i++)的形式,代码就出来了
#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
// 每一列的第一个元素
int col_1 = 1;
for (int i = 0; i < n; i++) {
col_1 += i; // 更新这一列的第一个元素的值
int temp = col_1;
for (int j = i + 2; j < n + 2; j++) {
cout << temp << ' ';
temp += j;
}
cout << endl;
}
}