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实现检测指定目录是否存在的方法
Jan 12 Javascript
国外的为初学者写的JavaScript教程
Jun 09 Javascript
js实现文本框中焦点在最后位置
Mar 04 Javascript
基于zepto的移动端轻量级日期插件--date_picker
Mar 04 Javascript
js实现页面a向页面b传参的方法
May 29 Javascript
ES6新特性三: Generator(生成器)函数详解
Apr 21 Javascript
vue router2.0二级路由的简单使用
Jul 05 Javascript
详解如何用模块化的方式写vuejs
Dec 16 Javascript
Vue infinite update loop的问题解决
Apr 23 Javascript
配置node服务器并且链接微信公众号接口配置步骤详解
Jun 21 Javascript
Vue数字输入框组件示例代码详解
Jan 15 Javascript
js实现整体缩放页面适配移动端
Mar 31 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 strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
2016/05/22 PHP
JavaScript中String和StringBuffer的速度之争
2010/04/01 Javascript
jquery 圆形旋转图片滚动切换效果
2011/01/19 Javascript
jQuery获取样式中颜色值的方法
2015/01/29 Javascript
JQuery中DOM实现事件移除的方法
2015/06/13 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
2016/10/18 Javascript
Angular.js与node.js项目里用cookie校验账户登录详解
2017/02/22 Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
2017/05/02 Javascript
详解Angular 4.x Injector
2017/05/04 Javascript
js图片轮播插件的封装
2017/07/21 Javascript
ES6中Array.copyWithin()函数的用法实例详解
2017/09/16 Javascript
Three.js如何实现雾化效果示例代码
2017/09/27 Javascript
Vue2.0结合webuploader实现文件分片上传功能
2018/03/09 Javascript
create-react-app构建项目慢的解决方法
2018/03/14 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
浅谈angularJS2中的界面跳转方法
2018/08/31 Javascript
详解如何在vue项目中使用lodop打印插件
2018/09/27 Javascript
世界上最短的数字判断js代码
2019/09/09 Javascript
vue-父子组件和ref实例详解
2019/11/10 Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
2019/11/13 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
[00:15]TI9地铁玩家打卡
2019/08/11 DOTA
Python2.7实现多进程下开发多线程示例
2019/05/31 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
2019/06/26 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
2020/02/25 Python
Numpy中ndim、shape、dtype、astype的用法详解
2020/06/14 Python
JAVA的事件委托机制和垃圾回收机制
2014/09/07 面试题
冬季施工防火方案
2014/05/17 职场文书
大学生简短的自我评价
2014/09/12 职场文书
见习报告格式要求
2014/11/04 职场文书
2014年小学美术工作总结
2014/12/20 职场文书
教师廉洁自律个人总结
2015/02/10 职场文书
中秋晚会致辞
2015/07/31 职场文书
2016中秋节晚会开场白
2015/11/26 职场文书
JS数组的常用方法整理
2021/03/31 Javascript
SSM VUE Axios详解
2021/10/05 Vue.js