changgyhub / leetcode_101

LeetCode 101:和你一起你轻松刷题(C++)
8.2k stars 1.12k forks source link

P54 动态规划 完全背包 内外层 勘误 #84

Open Corezcy opened 1 year ago

Corezcy commented 1 year ago

0-1 背包对物品的迭代放在外层,里层的体积或价值逆向遍历;完全背包对物品的迭代放在里层,外层的体积或价值正向遍历

完全背包提供的案例代码好像内外层反了:

int knapsack(vector<int> weights, vector<int> values, int N, int W) {
  vector<int> dp(W + 1, 0);
  for (int i = 1; i <= N; ++i) {
    int w = weights[i - 1], v = values[i - 1];
    for (int j = w; j <= W; ++j) {
      dp[j] = max(dp[j], dp[j - w] + v);
    }
  }
  return dp[W];
}