【问题标题】:01 knapsack problem with the limit of m items01 有m个物品限制的背包问题
【发布时间】:2020-11-03 03:11:08
【问题描述】:

有一个背包,容量为C,有n个项目可供选择,每个项目只有一个,并且它们的大小和值分别为ci和vi(i=1,2,...,n),如何在最多装载 m 件物品的情况下从物品中挑选物品,以最大化背包中的总价值? 谁能告诉我这个问题的具体思路,或者有什么代码可以看的吗?THS

【问题讨论】:

    标签: algorithm dynamic-programming


    【解决方案1】:

    您应该定义以下函数 f(i,j,k),它可以通过从最大容量为 j 的前 i 个项目 (1,2..i) 中精确选择 k 个项目来为您提供可以得到的最大值。

    根据我们的定义,转换将是:

    f(i , j , k) = max( t1 , t2 )
    
    t1 = f(i-i , j , k) // here we did not pick the i-th item
    
    t2 = vi + f(i-1 , j - ci , k-1)// here we picked the i-th item
    

    您的问题的结果将是 max( f(n,C,i) ) 其中 i=1,2...n

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-26
      • 2016-11-29
      • 1970-01-01
      • 2016-01-14
      相关资源
      最近更新 更多