Red Huang

Red Huang

背包问题

让背包里面的物品总价值最大

  1. const int N = 100, W = 100000;

  2. int cost[N], weight[N];

  3. int c [W + 1];   // 只需要一条数组就够了

  4. void knapsack(int n, int w)

  5. {

  6.     memset(c, 0, sizeof(c));

  7.     for (int i = 0; i < n; ++i)

  8.         for (int j = w; j - weight [i] >= 0; --j)    // 由后往前

  9.             c[j] = max(c[j], c[j - weight[i]] + cost[i]);

  10.     cout << "最高的价值为" << c [w];

  11. }

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。