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中处理字符串之link()方法的使用
Jun 08 Javascript
JavaScipt中栈的实现方法
Feb 17 Javascript
AngularJs  Using $location详解及示例代码
Sep 02 Javascript
详解Vue.js——60分钟组件快速入门(上篇)
Dec 05 Javascript
js继承实现方法详解
Dec 16 Javascript
js判断一个字符串是以某个字符串开头的简单实例
Dec 27 Javascript
vue组件间通信解析
Mar 01 Javascript
基于vue 开发中出现警告问题去除方法
Jan 25 Javascript
JavaScript多态与封装实例分析
Jul 27 Javascript
JS函数参数的传递与同名参数实例分析
Mar 16 Javascript
js实现车辆管理系统
Aug 26 Javascript
Vue看了就会的8个小技巧
Jan 21 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
优化NFR之一 --MSSQL Hello Buffer Overflow
2006/10/09 PHP
PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
2012/12/07 PHP
php生成短域名函数
2015/03/23 PHP
PHP中引用类型和值类型功能与用法示例
2019/02/26 PHP
探索Emberjs制作一个简单的Todo应用
2012/11/07 Javascript
JavaScript动态创建div属性和样式示例代码
2013/10/09 Javascript
jQuery设置和移除文本框默认值的方法
2015/03/09 Javascript
Javascript中的arguments与重载介绍
2015/03/15 Javascript
如何屏蔽防止别的网站嵌入框架代码
2015/08/24 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
原生js实现无限循环轮播图效果
2017/01/20 Javascript
基于JavaScript实现拖动滑块效果
2017/02/16 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
解决IE7中使用jQuery动态操作name问题
2017/08/28 jQuery
基于Vue实现拖拽功能
2020/07/29 Javascript
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
2019/05/14 Javascript
微信小程序云开发之数据库操作
2019/05/18 Javascript
VUE中使用HTTP库Axios方法详解
2020/02/05 Javascript
详解Vue Cli浏览器兼容性实践
2020/06/08 Javascript
Python二分法搜索算法实例分析
2015/05/11 Python
基于Python中capitalize()与title()的区别详解
2017/12/09 Python
python爬虫爬取微博评论案例详解
2019/03/27 Python
python3 打印输出字典中特定的某个key的方法示例
2019/07/06 Python
Django框架模型简单介绍与使用分析
2019/07/18 Python
python 字典有序并写入json文件过程解析
2019/09/30 Python
python的dict判断key是否存在的方法
2020/12/09 Python
CSS3制作炫酷的下拉菜单及弹起式选单的实例分享
2016/05/17 HTML / CSS
英国Flybe航空官网:欧洲最大的独立支线廉价航空公司
2019/07/15 全球购物
简历的自我评价
2014/02/03 职场文书
临床医师个人自我评价
2014/04/06 职场文书
女生抽烟检讨书
2014/10/05 职场文书
交警正风肃纪剖析材料
2014/10/29 职场文书
标枪加油稿
2015/07/22 职场文书
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript
详解MySql中InnoDB存储引擎中的各种锁
2022/02/12 MySQL
详解Go语言中配置文件使用与日志配置
2022/06/01 Golang