Day 38 动态规划
理论基础
动态规划的解题步骤:文章来源:https://www.toymoban.com/news/detail-556542.html
- 确定
dp
数组(dp table)以及下标的含义 - 确定递推公式
-
dp
数组如何初始化 - 确定遍历顺序
- 举例推导
dp
数组
509. 斐波那契数
很基础文章来源地址https://www.toymoban.com/news/detail-556542.html
class Solution {
public:
int fib(int n) {
int a = 0, b = 1;
while (n--)
{
b = a + b;
a = b - a;
}
return a;
}
};
70. 爬楼梯
class Solution {
public:
int climbStairs(int n) {
long long step1 = 1, step2 = 1; // 应该声明为long long,防止溢出
while (n--)
{
step2 = step1 + step2;
step1 = step2 - step1;
}
return step1;
}
};
746. 使用最小花费爬楼梯
class Solution {
public:
int minCostClimbingStairs(vector<int>& cost) {
vector<int> table(cost.size() + 1, 0);
for (int i = 2; i < table.size(); i++)
{
table[i] = min(table[i - 2] + cost[i - 2], table[i - 1] + cost[i - 1]);
}
return table[cost.size()];
}
};
到了这里,关于算法刷题Day 38 动态规划理论基础+斐波那契数+爬楼梯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!