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字符串转换成数字与数字转换成字符串的实现方法
Jan 08 Javascript
jQuery链使用指南
Jan 20 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
Feb 05 Javascript
jQuery实现响应鼠标背景变化的动态菜单效果代码
Aug 27 Javascript
基于javascript实现浏览器滚动条快到底部时自动加载数据
Nov 30 Javascript
jQuery实现的网格线绘制方法
Jun 20 Javascript
VueJs与ReactJS和AngularJS的异同点
Dec 12 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
Dec 21 Javascript
JS判断非空至少输入两个字符的简单实现方法
Jun 23 Javascript
js制作简单的音乐播放器的示例代码
Aug 28 Javascript
详解如何在Vue项目中导出Excel
Apr 19 Javascript
使用原生javascript开发计算器实例代码
Feb 21 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
收集的DedeCMS一些使用经验
2007/03/17 PHP
PHP下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
采用memcache在web集群中实现session的同步会话
2014/07/05 PHP
详解Yii2.0 rules验证规则集合
2017/03/21 PHP
ThinkPHP开发--使用七牛云储存
2017/09/14 PHP
php提供实现反射的方法和实例代码
2019/09/17 PHP
JavaScript判断变量是否为undefined的两种写法区别
2013/12/04 Javascript
js+css实现的简单易用兼容好的分页
2013/12/30 Javascript
当某个文本框成为焦点时即清除文本框内容
2014/04/28 Javascript
jQuery Validation PlugIn的使用方法详解
2015/12/18 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
2016/10/21 Javascript
javascript 判断当前浏览器版本并判断ie版本
2017/02/17 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
vue-router 路由基础的详解
2017/10/17 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
2019/07/10 Javascript
返回上一个url并刷新界面的js代码
2020/09/12 Javascript
微信小程序实现拼图小游戏
2020/10/22 Javascript
[02:32]“虐狗”镜头慎点 2016国际邀请赛中国区预选赛现场玩家采访
2016/06/28 DOTA
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
Python中生成Epoch的方法
2017/04/26 Python
python 实现语音聊天机器人的示例代码
2018/12/02 Python
python获取交互式ssh shell的方法
2019/02/14 Python
python web框架中实现原生分页
2019/09/08 Python
浅谈python之自动化运维(Paramiko)
2020/01/31 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
2020/02/27 Python
深入浅析Python 命令行模块 Click
2020/03/11 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
2020/12/04 Python
详解如何用canvas画一个微笑的表情
2019/03/14 HTML / CSS
Ann Taylor官方网站:美国最大的女性产品制造商之一
2016/09/14 全球购物
记账会计岗位职责
2014/06/16 职场文书
委托书如何写
2014/08/30 职场文书
优秀党员学习焦裕禄精神思想汇报范文
2014/09/10 职场文书
高中生自我评价范文2015
2015/03/03 职场文书
用Python进行栅格数据的分区统计和批量提取
2021/05/27 Python
详解在SQLPlus中实现上下键翻查历史命令的功能
2022/03/18 SQL Server