import java.util.Arrays;
import java.util.Comparator;
import java.util.LinkedList;
class Main {
public static void main(String[] args) {
CoinTemplate coinTemplate=new CoinTemplate();
coinTemplate.test1();
coinTemplate.test2();
coinTemplate.test3();
}
}
class Coin {
public String name;
public double value;
public int coinneed;
Coin(String Name, double value,int coinneed) {
this.name = Name;
this.value=value;
this.coinneed=coinneed;
}
Coin(Coin coin) {
this.name = coin.name;
this.value=coin.value;
this.coinneed=coin.coinneed;
}
}
class CoinTemplate {
public static LinkedList<Coin> makechange(int change, Coin[] coins){
LinkedList<Coin> beans = new LinkedList<Coin>();
Arrays.sort(coins, new Comparator<Coin>() {
@Override
public int compare(Coin o1, Coin o2) {
if(o1.value>o2.value)
{
return -1;
}
else if(o1.value==o2.value)
{
return 0;
}
else{
return 1;
}
}
});
int leftpackcapacity=change;
for (int i = 0; i < coins.length; i++) {
if(leftpackcapacity>=coins[i].value){
int coinneed=(int)(leftpackcapacity/coins[i].value);
leftpackcapacity-=coinneed*coins[i].value;
beans.add(new Coin(coins[i].name,coins[i].value,coinneed));
}
else{
continue;
}
}
return beans;
}
public static void test1() {
Coin[] coins = {
new Coin("二角五分硬币", 25, 0),
new Coin("一角硬币", 10, 0),
new Coin("五分硬币", 5, 0),
new Coin("一分硬币", 1, 0),
};
LinkedList<Coin> beans = makechange(66, coins);
double maxValue = 0;
System.out.println("装了如下物品:");
for (int i = 0; i < beans.size(); ++i) {
maxValue +=(beans.get(i).value*beans.get(i).coinneed
) ;
System.out.println(beans.get(i).name + " " + beans.get(i).coinneed);
}
System.out.println("总价值:" + maxValue);
}
public static void test2() {
Coin[] coins = {
new Coin("二角五分硬币", 25, 0),
new Coin("一角硬币", 10, 0),
new Coin("五分硬币", 5, 0),
new Coin("一分硬币", 1, 0),
};
LinkedList<Coin> beans = makechange(56, coins);
double maxValue = 0;
System.out.println("装了如下物品:");
for (int i = 0; i < beans.size(); ++i) {
maxValue +=(beans.get(i).value*beans.get(i).coinneed
) ;
System.out.println(beans.get(i).name + " " + beans.get(i).coinneed);
}
System.out.println("总价值:" + maxValue);
}
public static void test3() {
Coin[] coins = {
new Coin("二角五分硬币", 25, 0),
new Coin("一角硬币", 10, 0),
new Coin("五分硬币", 5, 0),
new Coin("一分硬币", 1, 0),
};
LinkedList<Coin> beans = makechange(36, coins);
double maxValue = 0;
System.out.println("装了如下物品:");
for (int i = 0; i < beans.size(); ++i) {
maxValue +=(beans.get(i).value*beans.get(i).coinneed
) ;
System.out.println(beans.get(i).name + " " + beans.get(i).coinneed);
}
System.out.println("总价值:" + maxValue);
}
}