动态规划--LeetCode第118题杨辉三角

动态规划--LeetCode第118题杨辉三角_第1张图片

由题目条件可知,杨辉三角中,每个数是它左上方和右上方的数的和,所以设置一个数组dp[n][n],

n为杨辉三角的行数,即题目中的numRows,每个dp[i][j]对应的是第i行第j列的元素;

动态方程转移式就为:dp[i][j] = dp[i-1][j-1] + dp[i-1][j],前提是n>i>=1 && 0

当j=0时,即为第一列的所有值,为1;

当j=n-1时,即为最后一列的所有值,都为1;

初始值为第一行第一列的dp[0][0] = 1;

故有以下代码:

动态规划--LeetCode第118题杨辉三角_第2张图片

诶,这边返回值他说我编译错误,看来这边不能简单的返回一个数组,所以我得从头把这个数组变一变~~~~

动态规划--LeetCode第118题杨辉三角_第3张图片

优化后发现,j也是小于i的;(j=i时,为最后一列值,为1)

对一个vector数组v来说(一维),v.resize(n,m)代表着为这个vector容器v创建大小为n,值为m的容器,就是相当于初始化;

多学多记~~~

你可能感兴趣的:(动态规划,leetcode,算法,c++)