回忆一下01背包的动态规划状态及状态方程:
设背包容量为M,一共有N件物品,每件物品质量为weight[i],每件物品的价值为value[i]。
1) 子问题定义:dp[i][j]表示前i件物品中选取若干件物品放入剩余容量为j的背包中所能得到的最大价值。
2) 根据第i件物品放或不放进行决策。
详细细节就不再多说了,我们直接进入正题。
在这里的话,最优方案总数就是物品总价值最大的方案数,那要怎么求呢?
我们设kry[i][j]为dp[i][j]的方案数,那么最优方案总数就是kry[N][M],我们分析下怎么求