dp问题描述
确定本题的状态表示
dp[i,j]
表示的是从左上角走到这个位置的路径条数
确定本题的状态转移方程
根据已知条件:dp[0,0]=1,dp[0,1]=1,dp[1,0]=1
本题的状态转移方程是:
dp[i,j]=dp[i,j-1]+dp[i-1,j]
填表求值
根据初始条件和状态转移方程,确定填表顺序,进而逐步填满dp表,最终返回题目要的结果
代码实现
这个题貌似我做过,二维dp问题的入坑题目,不多解释,直接上代码
class Solution {
public:
int uniquePaths(int m, int n) {
vector<vector<int>> dp(m+1,vector<int>(n+1,0));
dp[1][1]=1;// dp[1][2]=1;dp[2][1]=1;
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
if(i==1&&j==1) continue;
dp[i][j]=dp[i-1][j]+dp[i][j-1];
}
}
return dp[m][n];
}
};