首页 > 其他分享 >杨辉三角

杨辉三角

时间:2023-03-28 21:16:33浏览次数:40  
标签:tmp int back numRows 杨辉三角 dp

给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。

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

img

示例 1:

输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
示例 2:

输入: numRows = 1
输出: [[1]]

提示:

  • 1 <= numRows <= 30

思路:每个数都由左上方和右上方的数相加得到:
  \(dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j]\)
加上判断边界条件,当 j = 0 || j == i 时,dp[i][j] = 1;

// 实现一
vector<vector<int>> generate(int numRows) {
    vector<vector<int>> dp(numRows);
    dp[0].push_back(1);
    for (int i = 1; i < numRows; ++i) {
        for (int j = 0; j <= i; ++j) {
            int tmp = 0;
            if (j == 0 || j == i) {
                dp[i].push_back(1);
            } else {
                dp[i].push_back(dp[i - 1][j] + dp[i - 1][j - 1]);
            }
        }
    }
    return dp;
}

// 实现二
vector<vector<int>> generate(int numRows) {
    vector<vector<int>> dp(numRows);
    dp[0].push_back(1);
    for (int i = 1; i < numRows; ++i) {
        for (int j = 0; j <= i; ++j) {
            int tmp = 0;
            if (j > 0) {
                tmp += dp[i - 1][j - 1];
            }
            if (j < i) {
                tmp += dp[i - 1][j];
            }
            dp[i].push_back(tmp);
        }
    }
    return dp;
}

标签:tmp,int,back,numRows,杨辉三角,dp
From: https://www.cnblogs.com/AngleLin/p/17266684.html

相关文章

  • A0杨辉三角
    publicclassA0{publicstaticvoidmain(String[]args){int[][]a=newint[10][10];for(inti=0;i<10;i++){......
  • 杨辉三角形
    给定一个正整数N,请你输出数在杨辉三角中第一次出现N是在第几个数?思路参考杨辉三角特点:对称性杨辉三角形左右两边数字对称相等。渐增性越往中间数字越大,除......
  • 杨辉三角形
    #include<stdio.h>voidmain(){/*创建时间:2012、9、1;描述:输出杨辉三角11112113311464115......
  • 基本功练习_2_24_2之杨辉三角
    #include<stdio.h>intmain(void){intl;printf("输入行数\n");scanf("%d",&l);intf[100][100]={0};inta,b,c,d,e;for(a=0;a<100;a++){f[a][0]......
  • 杨辉三角
    题目描述:   思路:杨辉三角的特点就是,每行的第一个元素和最后一个元素都是1;其他元素=上一行与当前元素对应位置的元素+ 上一行与当前元素对应位置的元素的前一......
  • 算法刷题-杨辉三角-JAVA
    0x00引言为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。题解只写自己理解的解法,其他解法不再增加。......
  • 杨辉三角形和数组练习
    1.杨辉三角形1.1使用二维数组打印一个10行杨辉三角publicclassTest22{publicstaticvoidmain(String[]args){intyanghui[][]=newint[10][];for(int......
  • 杨辉三角 II
    给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例1:输入:numRows=5输出:[[1],[1,1],[1......
  • 杨辉三角
    给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例1:输入:numRows=5输出:[[1],[1,1],[1......
  • 杨辉三角
    1#include<stdio.h>2#defineN6//宏3intmain(intargc,constchar*argv[])4{5inta[N][N];6inti,j;7for(i=0;i<N;i++)//外循环,第......