一、问题
有 N N N 件物品和一个容量为 V V V 的背包。第 i i i 件物品的费用是 C i C_i Ci,价值是 W i W_i Wi。这些物品被划分为 K K K 组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。
二、思路
这个问题变成了每组物品有若干种策略:是选择本组的某一件,还是一件都不选。也就是说设 F [ k , v ] F [k, v] F[k,v] 表示前 k k k 组物品花费费用 v v v 能取得的最大权值,则有:
F [ k , v ] = m a x { F [ k − 1 , v ] , F [ k − 1 , v − C i ] + W i ∣ i t e m i ∈ g r o u p k } F[k,v]=max\{F[k-1,v],F[k-1,v-C_i]+W_i|item\ i \in group\ k\} F[k,v