【深基5.习7】杨辉三角 · 教师题解

【深基5.习7】杨辉三角

解题思路

建立三角数组,每行首尾为 1,内部数字等于上一行左上方和正上方数字之和。

正确性说明

杨辉三角边界均为 1,内部满足相邻两数求和关系;逐行计算时上一行已完整得到,因此归纳得到全部所需行。

易错点

首行只有一个 1;每行数字用空格分隔。

复杂度

时间 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;
    long long a[21][21] = {};
    for (int i = 0; i < n; i++) {
        a[i][0] = a[i][i] = 1;
        for (int j = 1; j < i; j++)
            a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
        for (int j = 0; j <= i; j++) {
            if (j)
                cout << " ";
            cout << a[i][j];
        }
        cout << "\n";
    }
    return 0;
}
返回题目