function optimizeBackpack() {
const fruits = [
{ name: '苹果', weight: 15, value: 300 },
{ name: '香蕉', weight: 18, value: 180 },
{ name: '橘子', weight: 10, value: 150 },
{ name: '猕猴桃', weight: 9, value: 270 }
];
const capacity = 20;
const n = fruits.length;
const dp = new Array(n + 1).fill(0).map(() => new Array(capacity + 1).fill(0));
for (let i = 1; i <= n; i++) {
for (let j = 1; j <= capacity; j++) {
if (fruits[i - 1].weight > j) {
dp[i][j] = dp[i - 1][j];
} else {
dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - fruits[i - 1].weight] + fruits[i - 1].value);
}
}
}
let i = n;
let j = capacity;
const strategy = [];
while (i > 0 && j > 0) {
if (dp[i][j] !== dp[i - 1][j]) {
strategy.push(fruits[i - 1].name);
j -= fruits[i - 1].weight;
}
i--;
}
console.log('装水果策略:', strategy);
return dp[n][capacity];
}
console.log('最大总价值:', optimizeBackpack());