import java.util.Arrays;
import java.util.Comparator;
import java.util.LinkedList;
class Main {
public static void main(String[] args) {
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>();
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;
}
}
});
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