完全背包问题分析

来源:互联网 发布:顶级域名和二级域名 编辑:程序博客网 时间:2024/06/11 11:52

完全背包(CompletePack): 有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。

 

对于每件物品,要考虑放还是不放,放几件的问题。

 

动态规划方程:

for i:0->N    for j:c[i]->V        dp[j]=max{ dp[j], dp[j-c[i]]+w[i] }


 

 

同样,dp[j]表示 背包容量为j时,能放入物品的最大价值。

 

和01背包不同的是,完全背包的内存循环为 0->V 顺序。,这样在内层循环中dp[j->V]就等于 放1件物品i的价值,放2件i的价值.......放V/c[i]件的价值。从而实现了每种物品放多件。

 

此方法为顺序考虑

0 0
原创粉丝点击