动态规划的理论基础
- 总结:动态五部曲
1.确定dp数组(dp table)以及下标的含义
2.确定递推公式
3.dp数组如何初始化
4.确定遍历顺序
5.举例推导dp数组
详细来源:代码随想录
不同路径I
- 题目:
- 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish” )。问总共有多少条不同的路径?
- 公开课:不同路径I
- 思路:
-
代码如下:
class Solution {
public int uniquePaths(int m, int n) {
//定义一个dp的二维数组
int[][] dp=new int[m][n];
//初始化dp[i][0]和dp[0][i]
for(int i=0;i<m;i++){
dp[i][0]=1;
}
for(int i=0;i<n;i++){
dp[0][i]=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];
}
}