题解:P5732 【深基5.习7】杨辉三角

· · 题解

题目简述

题意

输出 n 行杨辉三角。

杨辉三角

其实类似于斐波那契数列,不过是二维的,杨辉三角满足以下要求。

因此我们很好模拟,用 number_{i,j} 表示杨辉三角 (i,j) 的值,若 j 不等于 1 并且不等于 i,我们就令 number_{i,j} \gets number_{i-1,j}+number_{i-1,j-1}

number 数组主要是为了记录上一个数,直接输出就无法记录。本题的 n 非常小,所以我们无需将 number 转化为一维数组。

AC 代码

#include <bits/stdc++.h>
using namespace std;
#define in cin
#define out cout

int main() {
    int n;
    in >> n;
    int number[n + 1][n + 1]; //定义number数组杨辉三角
    memset(number, 0, sizeof(number)); //重置
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= i; j++) {
            if (i == 1 || j == i) //特殊项
                number[i][j] = 1;
            else //否则求上面两个数的和
                number[i][j] = number[i - 1][j] + number[i - 1][j - 1];
            out << number[i][j] << ' '; //然后输出
        }
        out << '\n';
    }
    return 0;
}