算法系列--动态规划--背包问题(3)--完全背包介绍(上)

简介: 算法系列--动态规划--背包问题(3)--完全背包介绍

💕"Su7"💕

作者:Lvzi

文章主要内容:算法系列–动态规划–背包问题(3)–完全背包介绍

大家好,今天为大家带来的是算法系列--动态规划--背包问题(3)--完全背包介绍

一.完全背包问题

可以发现完全背包问题和01背包问题还是特比相似的

分析:

完全背包问题01背包问题的推广,是以01背包问题为基础,两种问题的状态表示是相同的

  • dp[i][j]:在[1,i]所有物品中,在不超过体积j的前提下,可以实现的最大价值

分析状态转移方程时也是以最后一个位置的状态去划分,分为选/不选nums[i],此处就体现出完全背包问题和01背包问题最大的差别,01背包问题如果选择nums[i],选择的物品的数量只能是1(+w[i]),但是完全背包问题如果选择nums[i],可以选择的数量是任意多个(+n * w[i]),此时的状态是任意多个,这样的状态我们在正则表达式匹配那道问题中已经遇到过,解决思路就是利用数学规律,将任意多个状态使用简单的几个状态表示,具体操作是观察所有状态中不变的量,大胆假设,小心求证!!!

以下是状态转移方程的推导:

  • dp[i][j] = Max(dp[i-1][j],dp[i][j - nums[i]] + w[i])

初始化

  • 根据状态表示分析出不需要初始化

返回值:

  • dp[n][V]

算法系列--动态规划--背包问题(3)--完全背包介绍(下)https://developer.aliyun.com/article/1480856?spm=a2c6h.13148508.setting.18.352e4f0ecxYhMg


目录
相关文章
|
4天前
|
数据采集 监控 算法
应用动态规划算法解决可转债软件中的最优买卖时机问题
使用动态规划算法解决可转债市场的最佳买卖时机问题。定义状态dp[i][0](持有可转债的最大利润)和dp[i][1](不持有可转债的最大利润),通过状态转移方程更新状态,以max函数求解。提供的Python代码示例展示了如何计算最大利润。将此算法集成到软件中,结合网络爬虫获取实时价格,自动计算并提供买卖建议,助力投资者做出更明智的决策。
29 0
|
18天前
|
机器学习/深度学习 存储 算法
数据结构与算法 动态规划(启发式搜索、遗传算法、强化学习待完善)
数据结构与算法 动态规划(启发式搜索、遗传算法、强化学习待完善)
17 1
|
18天前
|
算法
代码随想录算法训练营第五十六天 | LeetCode 647. 回文子串、516. 最长回文子序列、动态规划总结
代码随想录算法训练营第五十六天 | LeetCode 647. 回文子串、516. 最长回文子序列、动态规划总结
36 1
|
18天前
|
算法
算法系列--动态规划--特殊的状态表示--分析重复子问题(下)
算法系列--动态规划--特殊的状态表示--分析重复子问题(下)
17 0
|
18天前
|
算法
算法系列--动态规划--特殊的状态表示--分析重复子问题(上)
算法系列--动态规划--特殊的状态表示--分析重复子问题
20 0
|
18天前
|
算法
算法系列--动态规划--背包问题(5)--二维费用背包问题(下)
算法系列--动态规划--背包问题(5)--二维费用背包问题(下)
15 0
|
18天前
|
算法
算法系列--动态规划--背包问题(5)--二维费用背包问题(上)
算法系列--动态规划--背包问题(5)--二维费用背包问题(上)
22 0
|
18天前
|
算法
算法系列--动态规划--背包问题(4)--完全背包拓展题目(下)
算法系列--动态规划--背包问题(4)--完全背包拓展题目(下)
23 0
|
18天前
|
算法
算法系列--动态规划--背包问题(4)--完全背包拓展题目(上)
算法系列--动态规划--背包问题(4)--完全背包拓展题目(上)
21 0
|
18天前
|
算法
算法系列--动态规划--背包问题(3)--完全背包介绍(下)
算法系列--动态规划--背包问题(3)--完全背包介绍(下)
22 0