JS使用贪心算法解决找零问题示例


Posted in Javascript onNovember 27, 2017

本文实例讲述了JS使用贪心算法解决找零问题。分享给大家供大家参考,具体如下:

前面介绍了JS贪心算法解决背包问题,这里再来看看找零问题的解决方法。

在现实生活中,经常遇到找零问题,假设有数目不限的面值为20,10,5,1的硬币。 给出需要找零数,求出找零方案,要求:使用数目最少的硬币。

对于此类问题,贪心算法采取的方式是找钱时,总是选取可供找钱的硬币的最大值。比如,需要找钱数为25时,找钱方式为20+5,而不是10+10+5。

贪心算法还是很常见的算法之一,这是由于它简单易行,构造贪心策略不是很困难。

可惜的是,它需要证明后才能真正运用到题目的算法中。

<script>
 var money= [20,10,5,1];
 /*
  * m[]:存放可供找零的面值,降序排列
  * n:需要找零数
  */
 function greedyMoney(m,n){
  for(var i=0;i<m.length;i++){
    while(n>=m[i] && n>0){
    document.write(m[i]+" ");
    n = n-m[i];
    }
  }
  document.write("<br>");
  }
  greedyMoney(money,73);
  greedyMoney([25,10,1],63);
</script>

结果是:

20 20 20 10 1 1 1
25 25 10 1 1 1

需要说明的是,在一些情况下,找零钱问题使用贪心算法并不能得到整体最优解,其结果可能只是最优解的很好近似。

比如,如果提供找零的面值是11,5,1,找零15。

使用贪心算法找零方式为11+1+1+1+1,需要五枚硬币而最优解为5+5+5,只需要3枚硬币。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
Jun 25 Javascript
实现只能输入数字的input不用replace方法
Sep 12 Javascript
javascript动态的改变IFrame的高度实现自动伸展
Oct 12 Javascript
jQuery基础语法实例入门
Dec 23 Javascript
jQuery基础_入门必看知识点
Jul 04 Javascript
windows下vue.js开发环境搭建教程
Mar 20 Javascript
Vue项目中跨域问题解决方案
Jun 05 Javascript
vue动态绑定class选中当前列表变色的方法示例
Dec 19 Javascript
Vue解析带html标签的字符串为dom的实例
Nov 13 Javascript
JS实现移动端双指缩放和旋转方法
Dec 13 Javascript
ES6对象操作实例详解
May 23 Javascript
基于vuex实现购物车功能
Jan 10 Vue.js
Vue.js实现分页查询功能
Nov 15 #Javascript
JS实现网页抢购功能(触发,终止脚本)
Nov 27 #Javascript
JS基于贪心算法解决背包问题示例
Nov 27 #Javascript
基于vue.js的分页插件详解
Nov 27 #Javascript
webpack构建换肤功能的思路详解
Nov 27 #Javascript
vue实现商城上货组件简易版
Nov 27 #Javascript
修改UA在PC中访问只能在微信中打开的链接方法
Nov 27 #Javascript
You might like
超级好用的一个php上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
PHP 如何获取二维数组中某个key的集合
2014/06/03 PHP
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
2015/09/22 PHP
php实现分页功能的详细实例方法
2019/09/29 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
aspx中利用js实现确认删除代码
2010/07/22 Javascript
Safari5中alert的无限循环BUG
2011/04/07 Javascript
ejs v9 javascript模板系统
2012/03/21 Javascript
Jquery 类网页微信二维码图块滚动效果具体实现
2013/10/14 Javascript
js获取页面传来参数的方法
2014/09/06 Javascript
jQuery中noConflict()用法实例分析
2015/02/08 Javascript
Easyui form combobox省市区三级联动
2016/01/13 Javascript
基于canvas实现的钟摆效果完整实例
2016/01/26 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
2016/07/12 Javascript
微信js-sdk地理位置接口用法示例
2016/10/12 Javascript
浅谈js继承的实现及公有、私有、静态方法的书写
2016/10/28 Javascript
详解小程序如何避免多次点击,重复触发事件
2019/04/08 Javascript
[01:19:46]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
python调用windows api锁定计算机示例
2014/04/17 Python
Python入门篇之条件、循环
2014/10/17 Python
Python教程之全局变量用法
2016/06/27 Python
详解 Python中LEGB和闭包及装饰器
2017/08/03 Python
Django框架基础模板标签与filter使用方法详解
2019/07/23 Python
django 通过URL访问上传的文件方法
2019/07/28 Python
Python matplotlib以日期为x轴作图代码实例
2019/11/22 Python
python装饰器的特性原理详解
2019/12/25 Python
Python3将ipa包中的文件按大小排序
2020/04/17 Python
Pyinstaller 打包发布经验总结
2020/06/02 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
html5 拖拽上传图片实例演示
2013/04/01 HTML / CSS
北京某公司的.net笔试题
2014/03/20 面试题
求职者怎样写自荐信
2014/04/13 职场文书
司法局火灾防控方案
2014/06/05 职场文书
跑操口号
2014/06/12 职场文书
生日宴会家属答谢词
2015/09/29 职场文书