洛谷P5732 杨辉三角

给出 n(n≤20),输出杨辉三角的前 n 行。

输入样例

6

输出样例

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

思路

规律就是(x,y)处的数字应该等于(x,y-1)(x-1,y-1)两处数字的和。比如第三行第二个数字2是第二行的两个1的和。

开一个二维数组,不要第0行和0列,初始就给0,初始化指定nums[1][1]=1,这样可以解决每一行第一个数字和最后一个数字的问题,它们等于0+1=1

最终代码

#include<iostream>
using namespace std;

int nums[666][666] = {0}, n;

void printA();

int main(){
    cin >> n;

    nums[1][1] = 1;

    for (int i = 2; i <= n; ++i) {
        for (int j = 1; j <= i; ++j) {
            nums[i][j] = nums[i-1][j] + nums[i-1][j-1];
        }
    }

    printA();

    return 0;
}

void printA() {
    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= i; ++j) {
            cout << nums[i][j] << " ";
        }
        cout<<endl;
    }
}
上一篇
下一篇