import java.util.ArrayList;
import java.util.List;
class main {
public static class Fruit {
String name;
int weight;
int value;
Fruit(String name, int weight, int value) {
this.name = name;
this.weight = weight;
this.value = value;
}
}
public static void main(String[] args) {
Fruit[] fruits = {
new Fruit("苹果", 15, 300),
new Fruit("香蕉", 18, 180),
new Fruit("橘子", 10, 150),
new Fruit("猕猴桃", 9, 270)
};
int capacity = 20;
int[][] dp = new int[fruits.length + 1][capacity + 1];
for (int i = 1; i <= fruits.length; i++) {
for (int w = 1; w <= capacity; w++) {
for (int k = 0; k <= fruits[i - 1].weight; k++) {
if (k <= w) {
dp[i][w] = Math.max(dp[i][w], dp[i - 1][w - k] + k * fruits[i - 1].value / fruits[i - 1].weight);
}
}
}
}
List<String> strategy = new ArrayList<>();
int i = fruits.length;
int w = capacity;
while (i > 0 && w > 0) {
for (int k = 0; k <= fruits[i - 1].weight; k++) {
if (k <= w && dp[i][w] == dp[i - 1][w - k] + k * fruits[i - 1].value / fruits[i - 1].weight) {
if (k > 0) {
strategy.add("装入 " + fruits[i - 1].name + " " + k + "kg");
}
w -= k;
break;
}
}
i--;
}
for (int j = strategy.size() - 1; j >= 0; j--) {
System.out.println(strategy.get(j));
}
System.out.println("总价值:" + dp[fruits.length][capacity]);
}
}