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中setTimeout的几种使用方法小结
Apr 07 Javascript
中文字符串截取的js函数代码
Apr 17 Javascript
js中生成map对象的方法
Jan 09 Javascript
使用jQuery重置(reset)表单的方法
May 05 Javascript
JS获取Table中td值的方法
Mar 19 Javascript
javascript html5摇一摇功能的实现
Apr 19 Javascript
javascript判断firebug是否开启的方法
Nov 23 Javascript
利用ES6语法重构React组件详解
Mar 02 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
Aug 10 Javascript
JavaScript工具库MyTools详解
Jan 01 Javascript
vue自定义标签和单页面多路由的实现代码
May 03 Javascript
js前端对于大量数据的展示方式及处理方法
Dec 02 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 简单日历实现代码
2009/10/28 PHP
解析crontab php自动运行的方法
2013/06/24 PHP
php封装的验证码类分享
2017/02/26 PHP
自制PHP框架之模型与数据库
2017/05/07 PHP
firefo xml 读写实现js代码
2009/06/11 Javascript
jQuery中Dom的基本操作小结
2014/01/23 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
2014/01/24 Javascript
jQuery获取节点和子节点文本的方法
2014/07/22 Javascript
javascript结合canvas实现图片旋转效果
2015/05/03 Javascript
原生js配合cookie制作保存路径的拖拽
2015/12/29 Javascript
JavaScript高级程序设计(第三版)学习笔记1~5章
2016/03/11 Javascript
简单的jQuery拖拽排序效果的实现(增强动态)
2017/02/09 Javascript
ES6新增数据结构WeakSet的用法详解
2017/08/07 Javascript
MVVM 双向绑定的实现代码
2018/06/21 Javascript
JavaScript 继承 封装 多态实现及原理详解
2019/07/29 Javascript
Vue实现页面添加水印功能
2019/11/09 Javascript
Python中使用HTMLParser解析html实例
2015/02/08 Python
Python中单例模式总结
2018/02/20 Python
详解python 爬取12306验证码
2019/05/10 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
2019/05/21 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
2020/05/29 Python
Python实现一个优先级队列的方法
2020/07/31 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
HTML5 canvas基本绘图之绘制线条
2016/06/27 HTML / CSS
Mytheresa中国官网:德国时尚奢侈品商城
2017/08/04 全球购物
IRO美国官网:法国服装品牌
2018/03/06 全球购物
美国领先的低折扣旅行网站:Hotwire
2019/01/19 全球购物
请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值
2014/09/15 面试题
恒华伟业笔试面试题
2015/02/26 面试题
大学生物业管理求职信
2013/10/24 职场文书
《苏珊的帽子》教学反思
2014/04/07 职场文书
加强作风建设心得体会
2014/10/22 职场文书
交通事故案件代理词
2015/05/23 职场文书
如何写新闻稿
2015/07/18 职场文书
Idea连接MySQL数据库出现中文乱码的问题
2021/04/14 MySQL
关于mysql中string和number的转换问题
2022/06/14 MySQL