import java.util.Arrays;
import java.util.Comparator;
import java.util.LinkedList;
public class MakingChange_ {
public static LinkedList<Coin> makeChange(int change, Coin[] coins) {
LinkedList<Coin> coinMaking = new LinkedList<Coin>();
Arrays.sort(coins, new Comparator<Coin>() {
public int compare(Coin left, Coin right) {
if (left.value > right.value) {
return -1;
} else if (left.value == right.value) {
return 0;
} else {
return 1;
}
}
});
int leftChange = change;
for (int i = 0; i < coins.length; ++i) {
if (leftChange >= coins[i].value) {
int coinNeed = (int) (leftChange / coins[i].value);
leftChange -= coinNeed * coins[i].value;
coinMaking.add(new Coin(coins[i].name, coins[i].value, coinNeed));
} else {
continue;
}
}
return coinMaking;
}
public static void test() {
Coin[] coins = {new Coin("二角五分硬币", 25), new Coin("一角硬币", 10), new Coin("五分硬币", 5), new Coin("一分硬币", 1)};
LinkedList<Coin> coinMaking = makeChange(48, coins);
System.out.println("用如下硬币找零48美分:");
for (int i = 0; i < coinMaking.size(); ++i) {
System.out.println(coinMaking.get(i).name + " " + coinMaking.get(i).count);
}
}
public static void main(String[] args) {
MakingChange_.test();
}
}
class Coin {
public String name;
public double value;
public int count;
Coin(String itemName, double value) {
this.name = itemName;
this.value = value;
this.count = 0;
}
Coin(String name, double value, int count) {
this.name = name;
this.value = value;
this.count = count;
}
}