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的事件描述
Sep 08 Javascript
javascript基本语法分析说明
Jun 15 Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
Dec 20 Javascript
每天一篇javascript学习小结(面向对象编程)
Nov 20 Javascript
JavaScript弹出对话框的三种方式
Mar 23 Javascript
基于jquery实现轮播特效
Apr 22 Javascript
详解支持Angular 2的表格控件
Jan 19 Javascript
ajax分页效果(bootstrap模态框)
Jan 23 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
Jan 21 jQuery
vue 导航内容设置选中状态样式的例子
Nov 01 Javascript
vue实现微信浏览器左上角返回按钮拦截功能
Jan 18 Javascript
JavaScript中Object、map、weakmap的区别分析
Dec 15 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仿博客园 个人博客(2) 数据库增添改删
2013/07/05 PHP
php获取域名的google收录示例
2014/03/24 PHP
PHP四舍五入、取整、round函数使用示例
2015/02/06 PHP
php使用number_format函数截取小数的方法分析
2016/05/27 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
js 页面刷新location.reload和location.replace的区别小结
2009/12/24 Javascript
javascript让setInteval里的函数参数中的this指向特定的对象
2010/01/31 Javascript
js multiple全选与取消全选实现代码
2012/12/04 Javascript
js获取元素到文档区域document的(横向、纵向)坐标的两种方法
2013/05/17 Javascript
javascript如何动态加载表格与动态添加表格行
2013/11/27 Javascript
JS实现将人民币金额转换为大写的示例代码
2014/02/13 Javascript
用js闭包的方法实现多点标注冒泡示例
2014/05/29 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
JSON遍历方式实例总结
2015/12/07 Javascript
Javascript中内建函数reduce的应用详解
2016/10/20 Javascript
weUI应用之JS常用信息提示弹层的封装
2016/11/21 Javascript
Vue非父子组件通信详解
2017/06/12 Javascript
Javascript中的getter和setter初识
2017/08/17 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
基于Vue插入视频的2种方法小结
2019/04/02 Javascript
vue中监听返回键问题
2019/08/28 Javascript
JavaScript布尔运算符原理使用解析
2020/05/06 Javascript
[01:14:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Orenda
2014/05/22 DOTA
用Python编写一个简单的俄罗斯方块游戏的教程
2015/04/03 Python
Django框架视图函数设计示例
2019/07/29 Python
基于python的itchat库实现微信聊天机器人(推荐)
2019/10/29 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
2020/05/25 Python
美国婚礼和派对礼品网站:Kate Aspen(新娘送礼会、迎婴派对)
2018/03/28 全球购物
英国领先的在线鱼贩:The Fish Society
2020/08/12 全球购物
医务工作者先进事迹材料
2014/01/26 职场文书
2014年村支部书记四风对照检查材料思想汇报
2014/10/02 职场文书
校园学雷锋广播稿
2014/10/08 职场文书
个人贷款收入证明
2014/10/26 职场文书
学籍证明模板
2014/11/21 职场文书
优质护理心得体会
2016/01/22 职场文书