01 最多m个物品的背包问题
01 knapsack problem with the limit of m items
有一个背包,容量city C,n件物品select,每件物品只有一件,它们的大小和价值是ci和vi(i=1,2,... ,n),如何在最多装载m个物品的情况下,从物品中select个物品中取出物品,使背包中的总价值最大化?
谁能告诉我这道题的具体思路ci,或者有代码可以看吗?THS
您应该定义以下函数 f(i,j,k),它通过从前 i 个项目 (1,2..i) 中恰好选择 k 个项目,最大容量为j.
根据我们的定义,转换将是:
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
有一个背包,容量city C,n件物品select,每件物品只有一件,它们的大小和价值是ci和vi(i=1,2,... ,n),如何在最多装载m个物品的情况下,从物品中select个物品中取出物品,使背包中的总价值最大化? 谁能告诉我这道题的具体思路ci,或者有代码可以看吗?THS
您应该定义以下函数 f(i,j,k),它通过从前 i 个项目 (1,2..i) 中恰好选择 k 个项目,最大容量为j.
根据我们的定义,转换将是:
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