欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > 力扣整理版十:动态规划(待更新)

力扣整理版十:动态规划(待更新)

2024/11/29 12:04:52 来源:https://blog.csdn.net/qq_51398395/article/details/144103227  浏览:    关键词:力扣整理版十:动态规划(待更新)

动态规划:每一个状态由上一个状态推导出来。

---------------------------

(1) 509 斐波那契数

(2) 70 爬楼梯

(3) 746 使用最小花费爬楼梯

---------------------------

一、基础题目

1、509 斐波那契数

509. 斐波那契数 - 力扣(LeetCode)

题目描述:斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1 给你n ,请计算 F(n) 。

Tips:我感觉和前面70爬楼梯的思想差不多。

------------  python  -----------

class Solution:def fib(self, n: int) -> int:if n==0:return 0if n==1:return 1pre2=0pre1=1res=0for _ in range(n-1):res=pre2+pre1pre2,pre1=pre1,resreturn res

2、70 爬楼梯 

70. 爬楼梯 - 力扣(LeetCode)

题目描述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

------------  python  -----------

class Solution:def climbStairs(self, n: int) -> int:if n==1:return 1pre2=1pre1=1for i in range(n-1):sum=pre1+pre2pre2=pre1pre1=sumreturn sum

3、746 使用最小花费爬楼梯

746. 使用最小花费爬楼梯 - 力扣(LeetCode)

题目描述:数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始)。每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶梯或者爬两个阶梯。请你找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0 或 1 的元素作为初始阶梯。

------------  python  -----------

class Solution:def minCostClimbingStairs(self, cost: List[int]) -> int:dp0 = 0  # 初始值,表示从起点开始不需要花费体力dp1 = 0  # 初始值,表示经过第一步不需要花费体力for i in range(2, len(cost) + 1):# 在第i步,可以选择从前一步(i-1)花费体力到达当前步,或者从前两步(i-2)花费体力到达当前步# 选择其中花费体力较小的路径,加上当前步的花费,得到当前步的最小花费dpi = min(dp1 + cost[i - 1], dp0 + cost[i - 2])dp0 = dp1  # 更新dp0为前一步的值,即上一次循环中的dp1dp1 = dpi  # 更新dp1为当前步的最小花费return dp1  # 返回到达楼顶的最小花费

4、62 不同路径 

题目描述:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?

------------  python  -----------

二、背包问题-背包

三、背包问题-完全背包

四、背包问题-多重背包

五、打家劫舍

六、股票问题

七、子序列-不连续

八、子序列-连续

九、子序列-编辑距离

十、子序列-回文

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com