编辑代码

import java.util.Arrays;
import java.util.Comparator;
import java.util.LinkedList;


class Main {
	public static void main(String[] args) {
        //JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。
		  GreedyTemplate greedyTemplate=new GreedyTemplate();
      greedyTemplate.test1();
      greedyTemplate.test2();
      greedyTemplate.test3();
	}
}
class Item {
    public String name;
    public double totalWeight;
    public double totalValue;

    Item(String itemName, double weight, double value) {
        this.name = itemName;
        this.totalWeight = weight;
        this.totalValue = value;
    }

    Item(Item item) {
        this.name = item.name;
        this.totalWeight = item.totalWeight;
        this.totalValue = item.totalValue;
    }
}

class GreedyTemplate {
    public static LinkedList<Item> packBean(int packCapacity, Item[] items){
        LinkedList<Item> beans = new LinkedList<Item>(); // 记录需要装包的豆子

        //1. 按照单价从高到低进行排序
     Arrays.sort(items, new Comparator<Item>() {
         @Override
         public int compare(Item o1, Item o2) {
             double left=o1.totalValue/ o1.totalWeight;
             double right=o2.totalValue/o2.totalWeight;
             if(left>right)
             {
                 return -1;
             }
             else if(left==right)
             {
                 return 0;
             }
             else{
                 return 1;
             }
         }
     });

        //2. 单价从高到低依次取出豆子
       int leftpackcapacity=packCapacity;
        for (int i = 0; i < items.length; i++) {
          if(leftpackcapacity>items[i].totalWeight){
              leftpackcapacity-=items[i].totalWeight;
              beans.add(new Item(items[i]));
          }
          else{
              double price=items[i].totalValue/items[i].totalWeight;
              double weight=leftpackcapacity;
              double value=weight*price;
              beans.add(new Item(items[i].name,weight,value));
              leftpackcapacity=0;
              break;
          }
        }

        return beans