动态规划 part 01
动态规划
● 509. 斐波那契数
● 70. 爬楼梯
● 746. 使用最小花费爬楼梯
509. 斐波那契数
法1:动态规划
int fib(int n) {
if (n <= 1) return n;
int dp[2];
dp[0] = 0;
dp[1] = 1;
for (int i = 1; i < n; ++i) {
int sum = dp[0] + dp[1];
dp[0] = dp[1];
dp[1] = sum;
}
return dp[1];
}
70. 爬楼梯
70. 爬楼梯
法1:动态规划
int climbStairs(int n) {
if (n <= 2) return n;
int dp[2];
dp[0] = 1;
dp[1] = 2;
for (int i = 2; i < n; ++i) {
int sum = dp[0] + dp[1];
dp[0] = dp[1];
dp[1] = sum;
}
return dp[1];
}
746. 使用最小花费爬楼梯
法1:动态规划
int minCostClimbingStairs(vector<int>& cost) {
int n = cost.size();
int dp[2];
dp[0] = 0;
dp[1] = 0;
for (int i = 2; i <= n; ++i) {
int dpi = min(dp[0] + cost[i-2], dp[1] +cost[i - 1]);
dp[0] = dp[1];
dp[1] = dpi;
}
return dp[1];
}