动态规划
class Solution {
public int uniquePaths(int m, int n) {
int[][] dp = new int[m][n];
// 从(0,0)到(i,0)路径只有一条
for(int i = 0; i < m; i++){
dp[i][0] = 1;
}
// 从(0,0)到(0,j)路径只有一条
for(int j = 0; j < n; j++){
dp[0][j] = 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];
}
}
确定递推公式:
求dp[i][j]
,只能从两个方向推导dp[i-1][j] + dp[i][j-1]
,因为dp[i][j]只有这两个方向过来