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 相关文章推荐
如果文字过长,则将过长的部分变成省略号显示
Jun 26 Javascript
Visual Studio中的jQuery智能提示设置方法
Mar 27 Javascript
JavaScript新窗口与子窗口传值详解
Feb 11 Javascript
指定区域的图片自动按比例缩小的js代码(防止页面被图片撑破)
Feb 21 Javascript
jQuery添加和删除指定标签的方法
Dec 16 Javascript
详解JavaScript对象类型
Jun 16 Javascript
JS自定义滚动条效果简单实现代码
Oct 27 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
Sep 10 Javascript
react 兄弟组件如何调用对方的方法示例
Oct 23 Javascript
微信小程序上传多图到服务器并获取返回的路径
May 05 Javascript
js贪心算法 钱币找零问题代码实例
Sep 11 Javascript
vue 实现cli3.0中使用proxy进行代理转发
Oct 30 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
搜索引擎技术核心揭密
2006/10/09 PHP
mysql 性能的检查和优化方法
2009/06/21 PHP
PHP里的中文变量说明
2011/07/23 PHP
php基于curl扩展制作跨平台的restfule 接口
2015/05/11 PHP
PHP获取指定日期是星期几的实现方法
2016/11/30 PHP
PHP实现的DES加密解密封装类完整实例
2017/04/29 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
2018/09/18 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
JavaScript函数、方法、对象代码
2008/10/29 Javascript
Javascript下IE与Firefox下的差异兼容写法总结
2010/06/18 Javascript
基于jquery的图片懒加载js
2010/06/30 Javascript
js加入收藏夹代码(兼容ie/ff/op)
2014/05/16 Javascript
JavaScript移除数组内重复元素的方法
2015/03/18 Javascript
javascript制作sql转换为stringBuffer的小工具
2015/04/03 Javascript
详解AngularJS中自定义指令的使用
2015/06/17 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
2016/03/13 Javascript
详解JavaScript中Hash Map映射结构的实现
2016/05/21 Javascript
JavaScript数组去重的几种方法效率测试
2016/10/23 Javascript
微信小程序与后台PHP交互的方法实例分析
2018/12/10 Javascript
file-loader打包图片文件时路径错误输出为[object-module]的解决方法
2020/01/03 Javascript
vue 使用lodash实现对象数组深拷贝操作
2020/09/10 Javascript
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
python文本数据处理学习笔记详解
2019/06/17 Python
使用Windows批处理和WMI设置Python的环境变量方法
2019/08/14 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
2019/10/09 Python
python numpy中cumsum的用法详解
2019/10/17 Python
python库matplotlib绘制坐标图
2019/10/18 Python
Python之字符串的遍历的4种方式
2020/12/08 Python
英国排名第一的餐具品牌:Denby Pottery
2019/11/01 全球购物
生产车间实习自我鉴定
2013/09/23 职场文书
大学生优秀自荐信范文
2014/02/25 职场文书
学校后勤工作总结2015
2015/05/15 职场文书
毕业欢送会致辞
2015/07/29 职场文书
班级班风口号大全
2015/12/25 职场文书
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang
el-table-column 内容不自动换行的解决方法
2022/08/14 Vue.js