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 相关文章推荐
一段利用WSH获取登录时间的jscript代码
May 11 Javascript
JQuery 确定css方框模型(盒模型Box Model)
Jan 22 Javascript
Javascript实现CheckBox的全选与取消全选的代码
Jul 20 Javascript
Three.js源码阅读笔记(Object3D类)
Dec 27 Javascript
浅析创建javascript对象的方法
May 13 Javascript
基于zepto.js简单实现上传图片
Jun 21 Javascript
Angular.JS中的this指向详解
May 17 Javascript
layui框架中layer父子页面交互的方法分析
Nov 15 Javascript
Vue表单及表单绑定方法
Sep 04 Javascript
玩转Koa之核心原理分析
Dec 29 Javascript
layui自定义ajax左侧三级菜单
Jul 26 Javascript
Vue操作Storage本地化存储
Apr 29 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
第八节--访问方式
2006/11/16 PHP
攻克CakePHP系列二 表单数据显示
2008/10/22 PHP
php xml文件操作实现代码(二)
2009/03/20 PHP
php源码加密 仿微盾PHP加密专家(PHPCodeLock)
2010/05/06 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
2016/09/01 PHP
php实现socket推送技术的示例
2017/12/20 PHP
thinkPHP5框架接口写法简单示例
2019/08/05 PHP
php5对象复制、clone、浅复制与深复制实例详解
2019/08/14 PHP
取得传值的函数
2006/10/27 Javascript
jQuery 学习入门篇附实例代码
2010/03/16 Javascript
jquery动态加载select下拉框示例代码
2013/12/10 Javascript
js图片滚动效果时间可随意设定当鼠标移上去时停止
2014/06/26 Javascript
javascript中setTimeout和setInterval的unref()和ref()用法示例
2014/11/26 Javascript
JS+CSS实现仿新浪微博搜索框的方法
2015/02/24 Javascript
浅谈javascript事件取消和阻止冒泡
2015/05/26 Javascript
学习JavaScript设计模式(继承)
2015/11/26 Javascript
js实现上传图片及时预览
2016/05/07 Javascript
js仿支付宝多方框输入支付密码效果
2016/09/27 Javascript
如何管理Vue中的缓存页面
2021/02/06 Vue.js
linux服务器快速卸载安装node环境(简单上手)
2021/02/22 Javascript
[49:27]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第一场
2018/04/05 DOTA
[00:15]天涯墨客终极技能展示
2018/08/25 DOTA
用Python登录好友QQ空间点赞的示例代码
2017/11/04 Python
Python爬虫包BeautifulSoup简介与安装(一)
2018/06/17 Python
python对list中的每个元素进行某种操作的方法
2018/06/29 Python
使用 Python 实现微信群友统计器的思路详解
2018/09/26 Python
python 控制Asterisk AMI接口外呼电话的例子
2019/08/08 Python
使用pyplot.matshow()函数添加绘图标题
2020/06/16 Python
python 进制转换 int、bin、oct、hex的原理
2021/01/13 Python
中国一家专注拼团的社交购物网站:拼多多
2018/06/13 全球购物
经济管理专业自荐信
2013/12/30 职场文书
给护士表扬信
2014/01/19 职场文书
入党积极分子自我鉴定范文
2014/03/25 职场文书
赡养老人协议书
2014/04/21 职场文书
在JavaScript中如何使用宏详解
2021/05/06 Javascript
vue route新窗口跳转页面并且携带与接收参数
2022/04/10 Vue.js