找零算法
来源:互联网 发布:生产线设计软件 编辑:程序博客网 时间:2024/06/05 08:20
刚刚在看贪心算法的时候看到一个钱币找零的问题,突发奇想来自己写一个找零的算法。不多说,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]);remove(monlist[i]);checkMoney(mon=mon-monlist[i]);//此处递归flag = false;break;}}if(mon>0&&flag)System.out.println("零钱不够,还差"+mon+"元。");;}return back;}public static void main(String[] args) {//测试money my = new money();List<Integer> ls = my.checkMoney(98);//输出找零的面值ls.forEach(System.out::println);}}
测试结果如下:
该算法的思想是,每一步尽可能用面值大的纸币,面值大的纸币数量为零时,使用下一级的面值。其中使用了递归方法,有兴趣的同学可以将算法再优化一下。:)
阅读全文
0 0
- 找零算法
- 硬币找零算法
- 超市找零简单算法
- 算法-硬币找零
- 硬币找零(贪心算法)
- 贪心算法_钱币找零
- 贪心算法的找零问题
- 找零
- 找零
- 找零
- 贪心算法算法导论 找零问题
- 使用贪心算法实现硬币找零问题
- 贪心算法实现找零问题求解
- 贪心算法解硬币找零问题
- 算法练习 动态规划 硬币找零
- 动态规划算法求解硬币找零问题
- 贪心算法之钱币找零问题
- 算法第四节:贪心算法解决“超市找零方案”问题
- GetDlgItem使用时出现ASSERT断言或报错
- 数据库视频总结(二)
- POJ
- 冒泡排序 选择排序 快速排序
- node连接Mongodb
- 找零算法
- C语言中为什么scanf会在赋值的变量前加&
- Python之‘’控制流‘’
- 2017 ACM/ICPC Asia Regional Shenyang Online 1002 & hdu6195:cable cable cable
- 【Tensorflow】tf.nn.atrous_conv2d如何实现空洞卷积?
- Ubuntu快捷搭建LNMP环境
- 学习Python的一些资源
- java异常(转)
- JS中的event 对象详解