寻找重复子问题:每个位置可以由上面和左边的方块走过来,只要知道上面的方块的走法和左边的方块的走法,即可得
定义状态数组:设DP(i, j)为从start到(i, j)位置的所有走法
得出递推公式:DP(i , j) = DP(i-1, j) + DP(i, j-1)
动态规划解法如下:
public int uniquePaths(int m, int n) {
int[][] dp = new int[m][n];
for(int j=0; j<n; j++) {
dp[0][j] = 1;
}
for(int i=0; i<m; i++) {
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];
}