import java.util.Arrays;
import java.util.Comparator;
public class BeanBagProblem {
public static void main(String[] args) {
Bean[] beans = {
new Bean(20, 100),
new Bean(30, 120),
new Bean(10, 60),
new Bean(40, 200),
new Bean(50, 240)
};
int maxWeight = 100;
int totalValue = 0;
Arrays.sort(beans, new Comparator<Bean>() {
@Override
public int compare(Bean bean1, Bean bean2) {
double valuePerWeight1 = (double) bean1.totalValue / bean1.totalWeight;
double valuePerWeight2 = (double) bean2.totalValue / bean2.totalWeight;
return Double.compare(valuePerWeight2, valuePerWeight1);
}
});
for (Bean bean : beans) {
if (maxWeight == 0) {
break;
}
int weight = Math.min(maxWeight, bean.totalWeight);
totalValue += weight * ((double) bean.totalValue / bean.totalWeight);
maxWeight -= weight;
}
System.out.println("最大总价值:" + totalValue);
}
}
class Bean {
int totalWeight;
int totalValue;
public Bean(int totalWeight, int totalValue) {
this.totalWeight = totalWeight;
this.totalValue = totalValue;
}
}