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 相关文章推荐
Ajax,UTF-8还是GB2312 eval 还是execScript
Nov 13 Javascript
JavaScript 乱码问题
Aug 06 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
Mar 15 Javascript
js获得当前系统日期时间的方法
May 06 Javascript
jQuery实现的超简单点赞效果实例分析
Dec 31 Javascript
javascript创建对象的几种模式介绍
May 06 Javascript
详解前端路由实现与react-router使用姿势
Aug 07 Javascript
Three.js利用orbit controls插件(轨道控制)控制模型交互动作详解
Sep 25 Javascript
浅谈JavaScript 代码简洁之道
Jan 09 Javascript
微信小程序 调用微信授权窗口相关问题解决
Jul 25 Javascript
jQuery开发仿QQ版音乐播放器
Jul 10 jQuery
vue3中轻松实现switch功能组件的全过程
Jan 07 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实现文件下载(支持中文文名)
2013/12/04 PHP
PHP实现文件下载断点续传详解
2014/10/15 PHP
thinkphp特殊标签用法概述
2014/11/24 PHP
php文件缓存类用法实例分析
2015/04/22 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
PHP的中使用非缓冲模式查询数据库的方法
2017/02/05 PHP
PHP7 整型处理机制修改
2021/03/09 PHP
Aster vs Newbee BO5 第三场2.19
2021/03/10 DOTA
最近项目写了一些js,水平有待提高
2009/01/31 Javascript
jquery实现居中弹出层代码
2010/08/25 Javascript
jquery each()源代码
2011/02/14 Javascript
jQuery分组选择器用法实例
2014/12/23 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
2015/03/30 Javascript
JavaScript实现的简单烟花特效代码
2015/10/20 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
2016/02/25 Javascript
全面解析Javascript无限添加QQ好友原理
2016/06/15 Javascript
Bootstrap栅格系统的使用详解
2017/10/30 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
Vue实现美团app的影院推荐选座功能【推荐】
2018/08/29 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
2018/09/27 Javascript
ztree加载完成后显示勾选节点的实现代码
2018/10/22 Javascript
跟混乱的页面弹窗说再见
2019/04/11 Javascript
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
微信小程序开发之获取用户手机号码(php接口解密)
2020/05/17 Javascript
python读取excel表格生成erlang数据
2017/08/26 Python
对Python random模块打乱数组顺序的实例讲解
2018/11/08 Python
基于Django统计博客文章阅读量
2019/10/29 Python
python用分数表示矩阵的方法实例
2021/01/11 Python
CSS的pointer-events属性详细介绍(作用和注意事项)
2014/04/23 HTML / CSS
儿童生日会策划方案
2014/05/15 职场文书
社区关爱留守儿童活动方案
2014/08/22 职场文书
仲裁协议书
2014/09/26 职场文书
环境工程专业毕业生求职信
2014/09/30 职场文书
2016年质量月活动总结报告
2016/04/05 职场文书