您的位置:首页 > 其它

01背包问题

2012-12-16 14:15 246 查看
变量设定:n(表示物品数量),maxweight (背包的最大容量), wei[max] (存放每个物品的重量) val[max](存放每个物品的价值)

f的初始化状态取决题目要求是恰好装满背包,还是不装满也可,下面内容针对不装满也可的情况。

应用二维数组解:动态方程f[i][j](i表示第i件物品,j表示此时背包的容量)

f[i][j]的初始化状态为,f[i][0]=0,f[0][j]=0

for(i=1;i<=m;i++)

{

for(j=1;j<=maxweight;j++)

{

f[i][j]=max(f[i][j-wei[i]]+val[i],f[i-1][j]) (wei[i]<=j)

f[i][j]=f[i-1][j] (wei[i]>j)

}

}

应用一维数组解:f[i]表示背包容量为i

f[i]的初始状态为 f[i]=0

for(i=1;i<=n;i++)

{

for(j=m;j>=wei[i];j--)

{

f[j]=f[j-wei[i]]+val[i]>f[j]?f[j-wei[i]]+val[i]:f[j];

}

}

详细内容参考/article/5568038.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: