动态规划中如何初始化很重要!| LeetCode:62.不同路径_哔哩哔哩_bilibili
我们再拿下面这个图举例:
首先我们需要确定dp[i-1][j]和dp[i][j-1]的值。声明:这里的值不是大小,而是多少种路径 先看dp[i-1][j]: 因为只能向右或向下走,不能向上走,所以dp[i-1][j]=1
再看dp[i][j-1]:
dp[i][j-1]它可以由dp[i][j-1-1]+dp[i-1][j-1]获得
所以它的值为2
dp[i][j]=dp[i-1][j]+dp[i][j-1]=1+2=3
class Solution {
public:
int uniquePaths(int m, int n) {
//dp表
vector<vector<int>> dp(m,vector<int>(n,0)); //二位数组
//初始化
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
dp[0][j]=1;
dp[i][0]=1;
}
}
for(int i=1;i<m;i++)
{
for(int j=1;j<n;j++)
{
dp[i][j]=dp[i-1][j]+dp[i][j-1];
}
}
return dp[m-1][n-1];
}
};