如何使用 JavaScript 实现 01 背包问题? - 项越资源网-html css js 用法分享社区-开发交流-项越资源网

如何使用 JavaScript 实现 01 背包问题?

/* 实现 01 背包问题? */
var items = [
  {
    name: 'item1',
    weight: 2,
    value: 6
  },
  {
    name: 'item2',
    weight: 2,
    value: 3
  },
  {
    name: 'item3',
    weight: 6,
    value: 5
  },
  {
    name: 'item4',
    weight: 5,
    value: 4
  },
  {
    name: 'item5',
    weight: 4,
    value: 6
  }
];
var maxWeight = 10;
function knapsack(items, maxWeight) {
  var i, w, a, b, kS = [];
  for (i = 0; i < items.length; i++) {
    kS[i] = [];
  }
  for (i = 0; i < items.length; i++) {
    for (w = 0; w <= maxWeight; w++) {
      if (i === 0 || w === 0) {
        kS[i][w] = 0;
      } else if (items[i].weight <= w) {
        a = kS[i - 1][w];
        b = kS[i - 1][w - items[i].weight] + items[i].value;
        kS[i][w] = (a > b) ? a : b;
      } else {
        kS[i][w] = kS[i - 1][w];
      }
    }
  }
  return kS;
}
var result = knapsack(items, maxWeight);
console.log(result);
请登录后发表评论

    没有回复内容