背包问题学习及归纳
Posted linzeli
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了背包问题学习及归纳相关的知识,希望对你有一定的参考价值。
1.01背包问题
顾名思义,及每种物品可以选择放或不放,于是就有了最朴素的转移式:f[i][j]=max{f[i-1][j],f[i-1][j-w[i]]+c[i]},然后考虑优化空间,可转换为f[j]=max(f[j],f[j-w[i]]+c[i])注意j要逆序的从m到1(保证从已决定推到未决定);
2.完全背包问题
与01背包类似,但是关键的不同在于其j要顺序的从1到n,因为需要一个可能已选的子结果,然后同理可得f[j]=max(f[j],f[j-w[i]]+c[i]);
3.多重背包问题
基本想法是f[i][v]=max(f[i][j],f[i-1][j-k*w[i]+k*c[i]),(0<=k<=n[i]&&k*w[i]<=j);转换为01背包问题即把每一个拆分为n[i]个,这样时间和空间的复杂度为O(V*sum(n[i]));然后考虑优化,
以上是关于背包问题学习及归纳的主要内容,如果未能解决你的问题,请参考以下文章