编辑代码

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;
    }
}