动态规划算法核心思想:
将大的问题转化为小问题进行解决。
01背包问题:
01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的重量为W1,W2至Wn,与之相对应的价值为V1V2至Vn。01背包是背包问题中最简单的问题。01背包的约束条件是给定几种物品,每种物品有且只有一个(这个与完全背包不同),并且有价值和重量两个属性。在01背包问题中,因为每种物品只有一个,对于每个物品只需要考虑选与不选两种情况。如果不选择将其放入背包中,则不需要处理。如果选择将其放入背包中,由于不清楚之前放入的物品占据了多大的空间,需要枚举将这个物品放入背包后可能占据背包空间的所有情况。
下面来详细描述背包问题:
题目:有一个背包,容量为4磅,现有如下物品

要求:
1)达到的目标为装入的背包的总价值最大,并且重量不出去背包重量。
2)要求装入物品不能重复。
思路解析:
利用动态规划算法每次便利到的第i个物品,根据w[i]和v[i]来确定是否要将物品放到背包中。给定n个物品,w[i]和v[i]表示第i个物品的中重量和对应的价值。v[i][j]表示在背包容量为j重量时,前i个物品所能放的最大值。
动态规划过程如填表过程:
1)先使v[0][j] v[j][0]为0这样做的目的是更好的对应下标做后续计算。

2)当只有吉他时,背包容量为1或者2、3、4磅时 只能装入吉他

3)当有吉他和音响时分析步骤:
if(音响的容量大于当前背包容量)
直接使用上一个单元格的重量

if(音响的容量不大于当前背包容量)
取(上一个单元格的值)与(新增商品价值+剩余重量最大价值)比较,将最大的填入表中。

4万+

被折叠的 条评论
为什么被折叠?



