刚刚在看贪心算法的时候看到一个钱币找零的问题,突发奇想来自己写一个找零的算法。不多说,Show you the code。
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class money {
int[] monlist = {1,2,5,10,20,50,100};//人命币的面值
int[] count = {0,2,4,4,0,2,1};//各面值对应的张数
HashMap<Integer, Integer> kv;
List<Integer> back = new ArrayList<>();
public money(){
kv = new HashMap<>();
for(int i =0;i<7;i++)//将面值,张数存放到map中
kv.put(monlist[i], count[i]);
}
/**
* 面值减一
* @param key
*/
public void remove(int key){
kv.put(key, kv.get(key)-1);
}
/**
* 找零函数
* @param mon
* @return
*/
public List<Integer> checkMoney(int mon){
if(mon>0){
boolean flag = true;//用于判断是否缺少零钱
for(int i= 6;i>=0;i--){
if(mon>=monlist[i]&&kv.get(monlist[i])>0){
back.add(monlist[i]);
remov