LeetCode刷题笔记-动态规划-day2

Posted LL.LEBRON

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-1n-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的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode刷题笔记-动态规划-day2

Leetcode刷题笔记-动态规划

LeetCode刷题笔记-动态规划-day4

LeetCode刷题笔记-动态规划-day6

LeetCode刷题笔记-动态规划-day6

LeetCode刷题笔记-动态规划-day6