铜仁市论坛

首页 » 分类 » 定义 » 数据结构与算法模板总结五动态规划
TUhjnbcbe - 2021/2/10 17:09:00
北京中科白殿医院官网 https://baike.baidu.com/item/%E5%8C%97%E4%BA%AC%E4%B8%AD%E7%A7%91%E7%99%BD%E7%99%9C%E9%A3%8E%E5%8C%BB%E9%99%A2/9728824?fr=aladdin
数据结构与算法模板总结(五)-动态规划(背包)

背包问题的dp思路

背包模型

0-1背包

完全背包

多重背包

分组背包

背包问题的dp思路

通常从两个角度来考虑DP问题:

状态表示:

首先考虑问题需要用几维的状态来表示,每个状态f(i,j)表示的是一个集合,f(i,j)存的是集合中所有选法的总价值的最大值。

f(i,j)表示:「1.只从前i个物品中选」,「2.总体积=j的选法集合」。存的数量是每个选法的总价值的最大值。

状态计算:

状态计算求算的是,如何一步步的把每个状态算出。f(N,V)是所有选法总价值的最大值,表示从所有N个商品中选,并且总体积不超过V的选法的集合。

集合划分考虑把当前集合划分为若干个小的子集,使得每个子集可以用前面更小的状态表示出来。

注:f(i,j)存的是集合中所有选法的最大值,存的是一个数。

背包模型

背包模型可以描述为:有N个物品和一个容量为V的背包,每一个物品有两个属性:一个是体积

,一个是价值

。从中挑一些物品,使得总体积=V,求挑出物品最大价值。根据限制的不同,背包问题可以分为四种情况:

0-1背包:每个物品最多用一次;完全背包:每个物品有无限个;多重背包:每个物品最多有

个,不同物品的

值可能不同;分组背包问题:每组最多选一个物品;0-1背包题目

题目链接:

1
查看完整版本: 数据结构与算法模板总结五动态规划