首页 > 其他 > 详细

动态规划背包问题—完全背包

时间:2019-05-03 13:09:28      阅读:122      评论:0      收藏:0      [点我收藏+]

感觉背包问题是dp中最好理解的了

定义:大小为i的背包最多能装的价值

转移方程 f(i)=max{f(i-w[j])+v[j]}

其中w[j]指的是第j件物品的重量,而v[j]指的是第j件物品的价值

代码实现(1)

for(int i=0;i<=m;i++)//容量 
{
    for(int j=1;j<=n;j++)//物品的个数 
    {
        if(i-w[j]>=0)//如果能装下 
        {
            f[i]=max(f[i],f[i-w[j]]+v[j]);//装或者不装 
        }
     } 
} 

代码实现(2)

for(int i=1;i<=n;i++)//这个还要更好理解些吧 
{
    for(int j=w[i];j<=m;j++)//我们背包的容量至少都是物品的重量 
    {
        f[j]=max(f[j-w[i]]+v[i],f[j]);
    }
} 

 

动态规划背包问题—完全背包

原文:https://www.cnblogs.com/LJB666/p/10804752.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!