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 相关文章推荐
解析javascript 实用函数的使用详解
May 10 Javascript
jquery ajax方式直接提交整个表单核心代码
Aug 15 Javascript
45个JavaScript编程注意事项、技巧大全
Feb 11 Javascript
ES6中Symbol类型用法实例详解
Apr 06 Javascript
微信小程序联网请求的轮播图
Jul 07 Javascript
Vue.js 动态为img的src赋值方法
Mar 14 Javascript
JavaScript惰性载入函数实例分析
Mar 27 Javascript
微信小程序实现获取小程序码和二维码java接口开发
Mar 29 Javascript
javascript实现的时间格式加8小时功能示例
Jun 13 Javascript
Vue axios 将传递的json数据转为form data的例子
Oct 29 Javascript
JS实现简单控制视频播放倍速的实例代码
Apr 18 Javascript
JavaScript流程控制(分支)
Dec 06 Javascript
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中的类型提示(type hinting)功能介绍
2015/07/01 PHP
yii去掉必填项中星号的方法
2015/12/28 PHP
TP5框架简单登录功能实现方法示例
2019/10/31 PHP
关于实现代码语法标亮 dp.SyntaxHighlighter
2007/02/02 Javascript
javascript jQuery $.post $.ajax用法
2008/07/09 Javascript
IE和FireFox(FF)中js和css的不同
2009/04/13 Javascript
用户注册常用javascript代码
2009/08/29 Javascript
基于jquery封装的一个js分页
2011/11/15 Javascript
JavaScript的继承的封装介绍
2013/10/15 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
jQuery判断div随滚动条滚动到一定位置后停止
2014/04/02 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
js创建jsonArray传输至后台及后台全面解析
2016/04/11 Javascript
JavaScript检测原始值、引用值、属性
2016/06/20 Javascript
javascript鼠标跟随运动3种效果(眼球效果,苹果菜单,方向跟随)
2016/10/27 Javascript
详解VUE 定义全局变量的几种实现方式
2017/06/01 Javascript
vue2组件之select2调用的示例代码
2017/10/12 Javascript
实例解析Vue.js下载方式及基本概念
2018/05/11 Javascript
微信小程序实现点击图片旋转180度并且弹出下拉列表
2018/11/27 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
2018/11/28 Javascript
[01:21]DOTA2新纪元-7.0新版本即将开启!
2016/12/11 DOTA
python 处理string到hex脚本的方法
2018/10/26 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
2019/12/04 Python
Python PyInstaller库基本使用方法分析
2019/12/12 Python
用python给csv里的数据排序的具体代码
2020/07/17 Python
委托与事件是什么关系?为什么要使用委托
2014/04/18 面试题
高级Java程序员面试要点
2013/08/02 面试题
kfc实习自我鉴定
2013/12/14 职场文书
保险专业自荐信范文
2014/02/20 职场文书
中西医专业毕业生职业规划书
2014/02/24 职场文书
文化活动实施方案
2014/03/28 职场文书
企业优秀员工事迹材料
2014/05/28 职场文书
食品安全演讲稿
2014/09/01 职场文书
幼儿教师小班个人总结
2015/02/05 职场文书
导游词之大雁塔景区
2019/09/17 职场文书
修改MySQL的默认密码的四种小方法
2021/05/26 MySQL