const optimizeFruitBag = (fruits, capacity) => {
fruits.sort((a, b) => b.value / b.weight - a.value / a.weight);
const selectedFruits = [];
let remainingCapacity = capacity;
for (const fruit of fruits) {
if (remainingCapacity >= fruit.weight) {
selectedFruits.push({ ...fruit, description: "全部装入" });
remainingCapacity -= fruit.weight;
} else {
const description = "装入" + remainingCapacity + "/" + fruit.weight;
fruit.value = Math.floor(remainingCapacity / fruit.weight * fruit.value)
fruit.weight = remainingCapacity
selectedFruits.push({ ...fruit, description });
break;
}
}
return selectedFruits;
}
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 result = optimizeFruitBag(fruits, capacity);
console.log("策略为:");
for (const fruit of result) {
console.log(`${fruit.name}${fruit.description}, 重量为${fruit.weight}kg, 价值:${fruit.value}元,)`);
}