![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 54
疯狂的哈哈哈
这个作者很懒,什么都没留下…
展开
-
01背包问题
01背包问题总得来说01背包问题指的是有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能使用一次(每件物品的使用次数不受限制指的是完全背包问题),从而求解将哪些物品装入到背包里物品价值总和的最大化。背包问题可以使用回朔搜索出所以的情况,进而得到物品价值总和的最大化,但是时间复杂度会是O(2^n),这里n表示物品的数量。举一个例子:背包最大重量为4。物品为:重量价值物品0115物品1320原创 2021-08-14 18:45:26 · 156 阅读 · 0 评论 -
动态规划之整数拆分
LeetCode地址:整数拆分给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。说明: 你可以假设 n 不小于 2 且不大于 58。方法一 动态规划1.确定dp数组dp[i]是指第i个数将其拆分为至少两个正整数的和,并且使得这些整数的原创 2021-08-12 10:11:58 · 600 阅读 · 0 评论 -
动态规划之使用最小花费爬楼梯
LeetCode地址:使用最小花费爬楼梯数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始)。每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶梯或者爬两个阶梯。请你找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0 或 1 的元素作为初始阶梯。示例 1:输入:cost = [10, 15, 20]输出:15解释:最低花费是从 cost[1] 开始,然后走两步即可到阶梯顶,一共花费 15原创 2021-08-11 23:25:51 · 189 阅读 · 0 评论 -
动态规划之不同路径 II
LeetCode地址:不同路径 II一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。示例1:输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]输出:2解释:3x3 网格的正中间有一个障碍物。从左上原创 2021-08-11 23:12:50 · 99 阅读 · 0 评论 -
动态规划之不同路径
LeetCode地址:不同路径一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 1图示:示例1:输入:m = 3, n = 7输出:28示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向下 -> 向下2. 向下 ->原创 2021-08-11 22:39:16 · 266 阅读 · 0 评论 -
动态规划之爬楼梯
LeetCode地址:爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。 - 1 阶 + 1 阶 + 1 阶 - 1 阶 + 2 阶 - 2 阶 + 1 阶第一种方法 动态规划1.确定dp数组原创 2021-08-11 17:03:25 · 351 阅读 · 0 评论 -
动态规划系列之斐波那契数
LeetCode地址:斐波那契数斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给你 n ,请计算 F(n) 。示例 1:输入:2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 = 1示例 2:输入:3输出:2解释:F(3) = F(2) + F(1) =原创 2021-08-11 15:45:09 · 254 阅读 · 0 评论