价值:记录学习过程的思考,本身就是一场动态规划的前生,记忆化搜索。
// dp[i][j] = 走到(i,j)点的路径数目
// dp[i][j] = dp[i-1][j] + dp[i][j-1]
class Solution {
public int uniquePaths(int m, int n) {
//dp[i][j] = dp[i-1][j] + dp[i][j-1]
int[][] dp = new int[m+1][n+1];
dp[0][1] = 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];
//确定下init
//dp[1][1]=dp[0][1]+dp[1][0];
//按照这个公式推肯定不行,
//因为 f 的初始数值都是 0,再怎么推也都是 0,
//先从起点下手,我们要让f(1,1)能根据上面得到的式子推出答案是 1(即起点到起点需要1步)
//这样才能有得到意义的结果。
//所以我们需要 将 dp [1][0]或者 dp[0][1] 初始化成 1 即可
}
}
return dp[m][n];
}
}