01背包问题思路_完全背包问题算法

其他范文 时间:2020-02-27 23:51:31 收藏本文下载本文
【www.daodoc.com - 其他范文】

01背包问题思路由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“完全背包问题算法”。

0-1背包问题通用算法:(算是非贪心算法吧,当然也用到贪心思想,每次取最大值)

1.假设:

n种物品,种类1,2,…,n;每种物品质量m[0],m[1],m[2],…,m[n-1];每种物品价值v[0],v[1],…,v[n-1];背包能承受的总质量为mk,设数组dp[1],dp[2],…,dp[mk-1],dp[mk](注意,dp不包含0包含mk)表示当包内放了1,2,…,mk-1,mk质量的东西时能达到的最大价值。

2.问题:

如何安排放置在背包里的物品使得背包内物品总价值能达到最大?(假设每种类型物品个数是无限的)

3.算法:

第一步:将n种物品按照质量从小到大排序,相应的价值也要跟着质量数组m的变化而变化,保持对应关系。

第二步:按照如下算法进行

for(i = 0;i

{

for(j = m[i];j

}

最终执行完毕后,dp[mk]值即为包内放置mk质量的东西时能达到的最大价值的值!

4.特例:

当题目只给你质量而没有价值时,不放设价值和质量取相同值,转化为特殊的0-1背包问题,如上解问题。当题目只给你价值而没有质量时也不妨设质量和价值取相同值,同样用上述方法解决问题。

5.思路: 用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}。可以压缩空间,f[v]=max{f[v],f[v-c[i]]+w[i]}

下载01背包问题思路word格式文档
下载01背包问题思路.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文