1 条题解
-
0
【例74.1】 倒杨辉三角
解题思路
先按杨辉规则构造前n行:两边为1,内部等于上一行相邻两项之和。然后把行序从n-1到0逆序输出,行内仍左到右。
正确性说明
依照上述推导,逐步维护已处理部分的有效状态。每一步都完成当前项的贡献且不改变已确定的次序,结束时输出的状态恰好对应题目要求。
易错点
倒的是行的上下次序,不反转每行数值顺序。
复杂度
时间O(n²),空间O(n²)。
参考代码(C++11)
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; vector<vector<long long>> a(n); for (int i = 0; i < n; i++) { a[i].assign(i + 1, 1); for (int j = 1; j < i; j++) a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; } for (int i = n - 1; i >= 0; i--) { for (int j = 0; j <= i; j++) { if (j) cout << " "; cout << a[i][j]; } cout << "\n"; } return 0; }
- 1