JS基于贪心算法解决背包问题示例


Posted in Javascript onNovember 27, 2017

本文实例讲述了JS基于贪心算法解决背包问题。分享给大家供大家参考,具体如下:

贪心算法:在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。

寻找最优解的过程,目的是得到当前最优解

部分背包问题:固定容积的背包能放入物品的总最大价值

物品 A B C D
价格 50 220 60 60
尺寸 5 20 10 12
比率 10 11 6 5

按比例降序尽可能多放入物品

function greedy(values, weights, capacity){
  var returnValue = 0
  var remainCapacity = capacity
  var sortArray = []
  values.map((cur, index) =>{
    sortArray.push({
      'value': values[index],
      'weight': weights[index],
      'ratio': values[index]/weights[index]
    })
  })
  sortArray.sort(function(a, b){
    return b.ratio > a.ratio
  })
  console.log(sortArray)
  sortArray.map((cur,index) => {
    var num = parseInt(remainCapacity/cur.weight)
    console.log(num)
    remainCapacity -= num*cur.weight
    returnValue += num*cur.value
  })
  return returnValue
}
var items = ['A','B','C','D']
var values = [50,220,60,60]
var weights = [5,20,10,12]
var capacity = 32 //背包容积
greedy(values, weights, capacity) // 320

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
jQuery如何取id有.的值一般的方法是取不到的
Apr 18 Javascript
jQuery中on()方法用法实例详解
Feb 06 Javascript
javascript使用Promise对象实现异步编程
Mar 01 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
May 03 Javascript
jQuery侧边栏实现代码
May 06 Javascript
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
Apr 21 Javascript
详解webpack3如何正确引用并使用jQuery库
Aug 26 jQuery
vue微信分享 vue实现当前页面分享其他页面
Dec 02 Javascript
layui table 表格上添加日期控件的两种方法
Sep 28 Javascript
Vue插件之滑动验证码用法详解
Apr 05 Javascript
jQuery实现简单QQ聊天框
Aug 27 jQuery
Vue实现圆环进度条的示例
Feb 06 Vue.js
基于vue.js的分页插件详解
Nov 27 #Javascript
webpack构建换肤功能的思路详解
Nov 27 #Javascript
vue实现商城上货组件简易版
Nov 27 #Javascript
修改UA在PC中访问只能在微信中打开的链接方法
Nov 27 #Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
Nov 27 #Javascript
vue实现商城购物车功能
Nov 27 #Javascript
Vim快速合并行及vim 将文件所有行合并到一行
Nov 27 #Javascript
You might like
PHP4在Windows2000下的安装
2006/10/09 PHP
克隆一个新项目的快捷方式
2013/04/10 PHP
PHP正则匹配到2个字符串之间的内容方法
2018/12/24 PHP
日期 时间js控件
2009/05/07 Javascript
js 自定义的联动下拉框
2010/02/07 Javascript
js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码
2011/07/27 Javascript
jQuery setTimeout()函数使用方法
2013/04/07 Javascript
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
2013/04/08 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
如何防止JavaScript自动插入分号
2015/11/05 Javascript
node.js+express制作网页计算器
2016/01/17 Javascript
JavaScript学习笔记之数组随机排序
2016/03/23 Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
2016/05/17 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
2018/12/04 jQuery
vue工程全局设置ajax的等待动效的方法
2019/02/22 Javascript
vue插件mescroll.js实现移动端上拉加载和下拉刷新
2019/03/07 Javascript
javascript实现小型区块链功能
2019/04/03 Javascript
JavaScript箭头函数中的this详解
2019/06/19 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
2019/11/04 Javascript
vue通过接口直接下载java生成好的Excel表格案例
2020/10/26 Javascript
[33:28]完美世界DOTA2联赛PWL S3 PXG vs GXR 第三场 12.19
2020/12/24 DOTA
python人人网登录应用实例
2014/09/26 Python
在Python的Django框架中生成CSV文件的方法
2015/07/22 Python
python实现随机森林random forest的原理及方法
2017/12/21 Python
python使用turtle库绘制树
2018/06/25 Python
对python多线程SSH登录并发脚本详解
2019/02/14 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
2019/09/15 Python
python virtualenv虚拟环境配置与使用教程详解
2020/07/13 Python
彻底解决Python包下载慢问题
2020/11/15 Python
微软开源最强Python自动化神器Playwright(不用写一行代码)
2021/01/05 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
音乐系毕业生自荐信
2013/10/27 职场文书
思想品德自我评价
2014/02/04 职场文书
导航工程专业自荐信
2014/09/02 职场文书
css3带你实现3D转换效果
2022/02/24 HTML / CSS