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 .ajax 在IE下卡死问题的解决方法
Oct 26 Javascript
JQuery中html()方法使用不当带来的陷阱
Apr 07 Javascript
jquery遍历数组与筛选数组的方法
Nov 05 Javascript
js简单实现根据身份证号码识别性别年龄生日
Nov 29 Javascript
JS组件Bootstrap Table布局详解
May 27 Javascript
使用bootstrap validator的remote验证代码经验分享(推荐)
Sep 21 Javascript
微信小程序 详解Page中data数据操作和函数调用
Jan 12 Javascript
基于JavaScript实现活动倒计时效果
Apr 20 Javascript
Vue2.0表单校验组件vee-validate的使用详解
May 02 Javascript
Vue.js仿微信聊天窗口展示组件功能
Aug 11 Javascript
jquery实现有过渡效果的tab切换
Jul 17 jQuery
vue swipeCell滑动单元格(仿微信)的实现示例
Sep 14 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
跟我学Laravel之配置Laravel
2014/10/15 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
2010/03/18 Javascript
HTML中的setCapture和releaseCapture使用介绍
2012/03/21 Javascript
JS实现图片垂直居中显示小结
2016/12/13 Javascript
AngularJS实践之使用ng-repeat中$index的注意点
2016/12/22 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
2017/01/10 Javascript
Vue结合原生js实现自定义组件自动生成示例
2017/01/21 Javascript
JS实现线性表的链式表示方法示例【经典数据结构】
2017/04/11 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
2017/05/08 jQuery
jQuery实现html table行Tr的复制、删除、计算功能
2017/07/10 jQuery
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
jQuery Ajax实现Select多级关联动态绑定数据的实例代码
2018/10/26 jQuery
pageGroup.js实现分页功能
2019/07/27 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
2020/02/10 Javascript
[57:22]完美世界DOTA2联赛PWL S2 FTD vs PXG 第二场 11.27
2020/12/01 DOTA
Python的Urllib库的基本使用教程
2015/04/30 Python
轻松掌握python设计模式之访问者模式
2016/11/18 Python
Python实现对象转换为xml的方法示例
2017/06/08 Python
python3判断url链接是否为404的方法
2018/08/10 Python
漂亮的Django Markdown富文本app插件的实现
2019/01/02 Python
基于Python爬取素材网站音频文件
2020/10/21 Python
Python扫描端口的实现
2021/01/25 Python
html+css3实现的登录界面
2020/12/09 HTML / CSS
AJAX检测用户名是否存在的方法
2021/03/24 Javascript
毕业研究生的自我鉴定
2013/11/30 职场文书
满月酒答谢词
2014/01/14 职场文书
运动会方阵解说词
2014/02/12 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
晚自修旷课检讨书怎么写
2014/11/17 职场文书
2014年中班下学期工作总结
2014/12/11 职场文书
优秀高中学生评语
2014/12/30 职场文书
运动会宣传语
2015/07/13 职场文书
小学三年级数学教学反思
2016/02/16 职场文书
一篇文章弄清楚Ajax请求的五个步骤
2022/03/17 Javascript