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日期对象的dateAdd与dateDiff方法
Nov 18 Javascript
读jQuery之七 判断点击了鼠标哪个键的代码
Jun 21 Javascript
基于Jquery的开发个代阴影的对话框效果代码
Jul 28 Javascript
JS之Date对象和获取系统当前时间详解
Jan 13 Javascript
jquery中radio checked问题
Mar 16 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
Jan 27 Javascript
jQuery遮罩层实例讲解
May 11 jQuery
jQuery 添加样式属性的优先级别方法(推荐)
Jun 08 jQuery
vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知
Aug 17 Javascript
json解析大全 双引号、键值对不在一起的情况
Dec 06 Javascript
微信小程序按顺序同步执行的两种方式
Dec 20 Javascript
11个Javascript小技巧帮你提升代码质量(小结)
Dec 28 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
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
推荐一款MAC OS X 下php集成开发环境mamp
2014/11/08 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
PHP模拟post提交数据方法汇总
2016/02/16 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
2017/07/13 PHP
PHP 枚举类型的管理与设计知识点总结
2020/02/13 PHP
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
JavaScript实现自己的DOM选择器原理及代码
2013/03/04 Javascript
javascript中的self和this用法小结
2014/02/08 Javascript
Js冒泡事件详解及阻止示例
2014/03/21 Javascript
C++中的string类的用法小结
2015/08/07 Javascript
浅析javascript中的事件代理
2015/11/06 Javascript
js手动播放图片实现图片轮播效果
2016/09/17 Javascript
原生js实现中奖信息无间隙滚动效果
2017/01/18 Javascript
利用node.js搭建简单web服务器的方法教程
2017/02/20 Javascript
angular.js 路由及页面传参示例
2017/02/24 Javascript
jQuery手风琴的简单制作
2017/05/12 jQuery
vue2项目使用sass的示例代码
2017/06/28 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
2018/01/11 Javascript
angular4自定义表单控件[(ngModel)]的实现
2018/11/23 Javascript
Vue 中文本内容超出规定行数后展开收起的处理的实现方法
2019/04/28 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
2019/05/16 Javascript
JS学习笔记之数组去重实现方法小结
2019/05/29 Javascript
[00:17]游戏风云独家报道:DD赛后说出数字秘密 吓死你们啊!
2014/07/13 DOTA
深入源码解析Python中的对象与类型
2015/12/11 Python
Java Web开发过程中登陆模块的验证码的实现方式总结
2016/05/25 Python
python 获得任意路径下的文件及其根目录的方法
2019/02/16 Python
Python面向对象之继承和多态用法分析
2019/06/08 Python
python实现银行管理系统
2019/10/25 Python
python常用运维脚本实例小结
2020/02/14 Python
Python使用pyyaml模块处理yaml数据
2020/04/14 Python
体育专业个人求职信范文
2013/12/27 职场文书
打架检讨书400字
2014/01/17 职场文书
2014年骨干教师工作总结
2014/12/19 职场文书
MySQL主从复制断开的常用修复方法
2021/04/07 MySQL
pytorch 预训练模型读取修改相关参数的填坑问题
2021/06/05 Python