题解 | #不同路径的数目(一)#
不同路径的数目(一)
https://www.nowcoder.com/practice/166eaff8439d4cd898e3ba933fbc6358
解题思路:
感受到递归 和 动态规划的区别了吗?
相同点:
1、都有边界值,都必须依赖边界值反推
2、有相应的,倒推公式
不同点:
1、动态规划,是一个格一个格填值,倒推结果值
2、递归则是,
import java.util.*;
public class Solution {
/**
* 递归的实现
* @param m int整型
* @param n int整型
* @return int整型
*/
public int uniquePaths2 (int m, int n) {
if(m == 1) {
return 1;
}
if(n == 1) {
return 1;
}
return uniquePaths(m-1, n) + uniquePaths(m, n-1);
}
/**
* 动态规划求解
*/
public int uniquePaths (int m, int n) {
int[][] dp = new int[m][n];
for(int i=0; i<n; i++) {
dp[0][i] = 1;
}
for(int j=0; j<m; j++) {
dp[j][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];
}
}