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 相关文章推荐
找到一点可怜的关于dojo资料,谢谢作者!
Dec 06 Javascript
详解new function(){}和function(){}() 区别分析
Mar 22 Javascript
JavaScript 学习笔记(十三)Dom创建表格
Jan 21 Javascript
JS 实现Json查询的方法实例
Apr 12 Javascript
js中的异常处理try...catch使用介绍
Sep 21 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
Dec 08 Javascript
浅析JavaScript中作用域和作用域链
Dec 06 Javascript
vue2.0开发实践总结之疑难篇
Dec 07 Javascript
基于JavaScript实现焦点图轮播效果
Mar 27 Javascript
Kindeditor单独调用多图上传实例
Jul 31 Javascript
JS实现canvas简单小画板功能
Jun 23 Javascript
JavaScript实现淘宝商品图切换效果
Apr 29 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
php blowfish加密解密算法
2016/07/02 PHP
Laravel-admin之修改操作日志的方法
2019/09/30 PHP
Apache站点配置SSL强制跳转443
2021/03/09 Servers
JavaScript定义类或函数的几种方式小结
2011/01/09 Javascript
利用jQuery实现可输入搜索文字的下拉框
2013/10/23 Javascript
原生JS绑定滑轮滚动事件兼容常见浏览器
2014/06/30 Javascript
详解JavaScript的while循环的使用
2015/06/03 Javascript
JavaScript资源预加载组件和滑屏组件的使用推荐
2016/03/10 Javascript
BootStrap扔进Django里的方法详解
2016/05/13 Javascript
JS实现弹出居中的模式窗口示例
2016/06/20 Javascript
jQuery插件EasyUI设置datagrid的checkbox为禁用状态的方法
2016/08/05 Javascript
Reactjs实现通用分页组件的实例代码
2017/01/19 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(一)
2017/05/11 Javascript
基于Vue实现页面切换左右滑动效果
2020/06/29 Javascript
Vuejs开发环境搭建及热更新【推荐】
2018/09/07 Javascript
微信小程序实现点击卡片 翻转效果
2019/09/04 Javascript
JavaScript设计模式---单例模式详解【四种基本形式】
2020/05/16 Javascript
Python进程间通信之共享内存详解
2017/10/30 Python
python中os和sys模块的区别与常用方法总结
2017/11/14 Python
Python定时发送消息的脚本:每天跟你女朋友说晚安
2018/10/21 Python
pyqt5之将textBrowser的内容写入txt文档的方法
2019/06/21 Python
python tkinter实现屏保程序
2019/07/30 Python
python文字转语音的实例代码分析
2019/11/12 Python
Java如何基于wsimport调用wcf接口
2020/06/17 Python
Python如何使用input函数获取输入
2020/08/06 Python
简单了解Python字典copy与赋值的区别
2020/09/16 Python
用 python 进行微信好友信息分析
2020/11/28 Python
python 模拟登录B站的示例代码
2020/12/15 Python
浅析HTML5:'data-'属性的作用
2018/01/23 HTML / CSS
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
军训鉴定表自我鉴定
2014/02/13 职场文书
绿色环保标语
2014/06/12 职场文书
小学生反邪教心得体会
2016/01/15 职场文书
发言稿之优秀教师篇
2019/09/26 职场文书
浅谈Python中对象是如何被调用的
2022/04/06 Python