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中巧用“闭包”实现程序的暂停执行功能
Apr 04 Javascript
使用jquery与图片美化checkbox和radio控件的代码(打包下载)
Nov 11 Javascript
用JS判别浏览器种类以及IE版本的几种方法小结
Aug 02 Javascript
Jquery Post处理后不进入回调的原因及解决方法
Jul 15 Javascript
Vue.js组件tree实现省市多级联动
Dec 02 Javascript
jQuery焦点图轮播效果实现方法
Dec 19 Javascript
简单的渐变轮播插件
Jan 12 Javascript
vue-cli webpack 开发环境跨域详解
May 18 Javascript
vue自定义过滤器创建和使用方法详解
Nov 06 Javascript
vue使用原生js实现滚动页面跟踪导航高亮的示例代码
Oct 25 Javascript
如何在基于vue-cli的项目自定义打包环境
Nov 10 Javascript
js实现筛选功能
Nov 24 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
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
2013/06/03 PHP
php抓取并保存网站图片的实现代码
2015/10/28 PHP
JavaScript常用对象的方法和属性小结
2012/01/24 Javascript
Js-$.extend扩展方法使方法参数更灵活
2013/01/15 Javascript
跟我学习javascript的this关键字
2020/05/28 Javascript
JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
2016/06/17 Javascript
微信小程序 开发工具快捷键整理
2016/10/31 Javascript
ztree实现左边动态生成树右边为内容详情功能
2017/11/03 Javascript
angularJs中$http获取后台数据的实例讲解
2018/08/08 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
微信小程序实现通过双向滑动缩放图片大小的方法
2018/12/30 Javascript
ES6知识点整理之对象解构赋值应用示例
2019/04/17 Javascript
微信小程序自定义胶囊样式
2020/12/27 Javascript
Python开发编码规范
2006/09/08 Python
Python挑选文件夹里宽大于300图片的方法
2015/03/05 Python
Python制作钉钉加密/解密工具
2016/12/07 Python
Python2实现的LED大数字显示效果示例
2017/09/04 Python
Python爬取当当、京东、亚马逊图书信息代码实例
2017/12/09 Python
Python学生成绩管理系统简洁版
2020/04/05 Python
详解Python自建logging模块
2018/01/29 Python
python粘包问题及socket套接字编程详解
2019/06/29 Python
python requests更换代理适用于IP频率限制的方法
2019/08/21 Python
python中bytes和str类型的区别
2019/10/21 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
2021/01/12 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
HTML5拖放效果的实现代码
2016/11/17 HTML / CSS
CHARLES & KEITH加拿大官网:新加坡时尚品牌
2020/03/26 全球购物
西班牙品牌鞋子、服装和配饰在线商店:Esdemarca
2021/02/17 全球购物
总结表彰大会主持词
2014/03/26 职场文书
乡镇精神文明建设汇报材料
2014/08/15 职场文书
售房协议书范本2014
2014/10/23 职场文书
学生检讨书范文
2019/06/24 职场文书
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python
Python机器学习之底层实现KNN
2021/06/20 Python
Ajax实现异步加载数据
2021/11/17 Javascript
VUE中的v-if与v-show区别介绍
2022/03/13 Vue.js