首页 留言 登录
递推-杨辉三角

题目:

给定一个非负索引 index,返回杨辉三角的第 index 行

在杨辉三角中,每个数是它左上和右上的和。

首先考虑,用什么数据结构来存储杨辉三角,

首选用一个矩阵,也就是二维数组

如下图:

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

其他的位置,用0来填充

1 0 0 0 0

1 1 0 0 0

1 2 1 0 0

1 3 3 1 0

1 4 6 4 1

这样我们就用了一个二维数组,来存储了杨辉三角

行从0开始,0行有1个元素,第n行有n+1个元素

代码如下:

#include <bits/stdc++.h> 
using namespace std;
int f[34][34];
int r[34];
int main(){
    int n;cin>>n;
    for(int i=0;i<=n;i++) {//从0行到n行 
        //第i行,有i+1个元素 所以j从0->i,共i+1次 
        for(int j=0;j<=i;j++) {
            if(j==0 || j==i) { //当处于矩阵最左边,或者对角线 
                f[i][j] = 1;   // 杨辉三角的边界 
            }else{
                //上一行同列 + 上一行前列 
                f[i][j] = f[i-1][j] + f[i-1][j-1];
            }     
        }
    }

    for(int i=0;i<=n;i++) { //第n行,0列->n列 
        r[i] = f[n][i] ;
    }
    for(int i=0;i<=n;i++) {
        cout << r[i] << " ";
    }

    return 0;
}
上一篇:排序-选择排序
下一篇:递推-爬楼梯
验证码
评论留言 (0条)