经典问题之01与完全背包总结

来源:互联网 发布:当呼吸化为空气知乎 编辑:程序博客网 时间:2024/05/21 09:49

01:

1.基础题型,

伪代码:

  i= 1 to n

    j= W to 1

      f[j]=max{f[j-w[i]]+v[i]};


2.W超大,n=20版;

思路:折半枚举,先枚举前十个的选物情况,记录,再枚举后十个的,累计即可。


3.W超大,n正常,V较小

思路:改变f[j]的定义,设f[j]表示要取价值总和为j的物品最少需要多少多少包重,结果就是最大的使f[j]<=W的j。

伪代码:

   i= 1 to n

     j=V to 1

       f[j]=min{f[j-v[i]]+w[i]};



完全背包:

1.基础题型:

伪代码:

   i=1 to n

    j=1 to W

      f[j]=max{f[j-w[i]]+v[i]}

2,3.同上的01背包,只需将循环顺序改一下即可

1 0