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);
没有回复内容