LeetCode刷题笔记-动态规划-day2
Posted ΘLLΘ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode刷题笔记-动态规划-day2相关的知识,希望对你有一定的参考价值。
文章目录
LeetCode刷题笔记-动态规划-day2
70. 爬楼梯
1.题目
原题链接:70. 爬楼梯
2.解题思路
算法:递推
定义数组f[i]
表示到第i
级台阶的总方案数,走到第i
级台阶的前一步可能走了1
级台阶,也可能走了2
级台阶,所以这里可以得到递推式:
f[i]=f[i-1]+f[i-2];
最终递推一遍即可。
3.代码
class Solution
public:
int climbStairs(int n)
vector<int> f(n+1);
f[0]=1,f[1]=1;
for(int i=2;i<=n;i++)
f[i]=f[i-1]+f[i-2];
return f[n];
;
746. 使用最小花费爬楼梯
1.题目
原题链接:746. 使用最小花费爬楼梯
2.解题思路
算法:递推
由题意可知,到达第i
级台阶需要的总费用等于第i
级台阶自身需要的费用加上经过前面台阶的总费用,而每次可以选择向上爬一个或者两个台阶。可以得出递推式:
f[i]=c[i]+min(f[i-1],f[i-2]);
初始化: f[0]=c[0],f[1]=c[1];
最终楼梯顶部为n
号台阶,我们只需要算出第n-1
和n-2
级台阶的值,取两者之间最小值即可。
3.代码
class Solution
public:
int minCostClimbingStairs(vector<int>& c)
int n=c.size();
vector<int> f(n+1);
f[0]=c[0],f[1]=c[1];
for(int i=2;i<n;i++)
f[i]=c[i]+min(f[i-1],f[i-2]);
return min(f[n-1],f[n-2]);
;
以上是关于LeetCode刷题笔记-动态规划-day2的主要内容,如果未能解决你的问题,请参考以下文章