动态规划步骤:
1.确定dp数组以及下标的含义
2.确定递推公式
3.dp数组如何初始化
4.确定遍历顺序
5.举例推导dp数组
原题链接
class Solution {
public int fib(int n) {
if(n < 2) return n;
int a = 0, b = 1, c = 0;
for(int i = 1; i < n; i++){
c = a + b;
a = b;
b = c;
}
return c;
}
}
原题链接
1.确定dp数组以及下标的含义
dp[i]: 爬到第i层楼梯,有dp[i]种方法
2.确定递推公式
dp[i] = dp[i - 1] + dp[i - 2]
3.dp数组如何初始化
dp[1] = 1,dp[2] = 2
4.确定遍历顺序
从递推公式dp[i] = dp[i - 1] + dp[i - 2];中可以看出,遍历顺序一定是从前向后遍历的
5.举例推导dp数组
class Solution {
public int climbStairs(int n) {
if(n <= 2) return n;
int a = 1, b = 2, sum = 0;
for(int i = 3; i <= n; i++){
sum = a + b;
a = b;
b = sum;
}
return sum;
}
}