我遇到了一个思维麻烦,我只是感到沮丧。我有一个背包问题的工作算法,使用动态编程,我指定
并且算法使用这些项目计算背包的最佳填充。但是现在我需要使用至少项目完全填充它,但我拥有无限量的每个项目。 (这些项目的权重为{1; w1; w2; ...}
,因此始终可以完成)。
我如何在“经典”算法中使用它?
由于
答案 0 :(得分:3)
让
initialize the dp array with INFINITY, dp[0] = 0;
for(i = 0;i<size of w;i++) {
for(j = 1;j<=M;j++) {
if(j-w[i] >= 0) {
dp[j] = min(dp[j], dp[j-w[i]]+1);
}
}
}
final solution is the value of dp[M];