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 相关文章推荐
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
Oct 11 Javascript
extjs两个tbar问题探讨
Aug 08 Javascript
jquery动态增加删除表格行的小例子
Nov 14 Javascript
用jquery实现的一个超级简单的下拉菜单
May 18 Javascript
jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法
Sep 23 Javascript
JavaScript 继承详解(六)
Oct 11 Javascript
JS 实现 ajax 异步浏览器兼容问题
Jan 21 Javascript
vue.js配合$.post从后台获取数据简单demo分享
Aug 11 Javascript
解决Vue2.0中使用less给元素添加背景图片出现的问题
Sep 03 Javascript
vue elementui el-form rules动态验证的实例代码详解
May 23 Javascript
Vue退出登录时清空缓存的实现
Nov 12 Javascript
three.js欧拉角和四元数的使用方法
Jul 26 Javascript
基于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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
模仿OSO的论坛(一)
2006/10/09 PHP
从零开始学YII2框架(四)扩展插件yii2-kartikgii
2014/08/20 PHP
Codeigniter发送邮件的方法
2015/03/19 PHP
关于JavaScript的gzip静态压缩方法
2007/01/05 Javascript
用Javascript数组处理多个字符串的连接问题
2009/08/20 Javascript
javascript中的document.open()方法使用介绍
2013/10/09 Javascript
nodejs分页类代码分享
2014/06/17 NodeJs
jQuery ajax serialize() 方法使用示例
2014/11/02 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
2015/12/11 Javascript
基于Cookie常用操作以及属性介绍
2017/09/07 Javascript
React学习之事件绑定的几种方法对比
2017/09/24 Javascript
原生JS实现动态加载js文件并在加载成功后执行回调函数的方法
2020/12/30 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
Layer.js实现表格溢出内容省略号显示,悬停显示全部的方法
2019/09/16 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
vant 解决tab切换插件标题样式自定义的问题
2020/11/13 Javascript
python使用reportlab画图示例(含中文汉字)
2013/12/03 Python
python中enumerate函数用法实例分析
2015/05/20 Python
在Django框架中伪造捕捉到的URLconf值的方法
2015/07/18 Python
python 回调函数和回调方法的实现分析
2016/03/23 Python
Python模糊查询本地文件夹去除文件后缀的实例(7行代码)
2017/11/09 Python
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
Python对接支付宝支付自实现功能
2019/10/10 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
CSS3实现粒子旋转伸缩加载动画
2016/04/22 HTML / CSS
HTML5上传文件显示进度的实现代码
2012/08/30 HTML / CSS
歌颂祖国的演讲稿
2014/05/04 职场文书
环境卫生工作汇报材料
2014/10/28 职场文书
幼师小班个人总结
2015/02/12 职场文书
有关骆驼祥子的读书笔记
2015/06/26 职场文书
学校远程教育工作总结
2015/08/11 职场文书
利用html+css实现菜单栏缓慢下拉效果的示例代码
2021/03/30 HTML / CSS
golang正则之命名分组方式
2021/04/25 Golang
小程序wx.getUserProfile接口的具体使用
2021/06/02 Javascript
Apache自带的ab压力测试工具的实现
2022/07/23 Servers