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 相关文章推荐
经验几则 推荐
Sep 05 Javascript
JavaScript 精粹读书笔记(1,2)
Feb 07 Javascript
获取select元素被选中的文本内容的js代码
Jan 29 Javascript
再谈javascript常见错误及解决方法
Sep 16 Javascript
使用jsonp实现跨域获取数据实例讲解
Dec 25 Javascript
JS模拟实现ECMAScript5新增的数组方法
Mar 20 Javascript
vue中用动态组件实现选项卡切换效果
Mar 25 Javascript
简单实现jQuery上传图片显示预览功能
Jun 29 jQuery
vue axios 给生产环境和发布环境配置不同的接口地址(推荐)
May 08 Javascript
Vue实现6位数密码效果
Aug 18 Javascript
JS实现获取数组中最大值或最小值功能示例
Mar 02 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
May 10 jQuery
基于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中调用JAVA
2006/10/09 PHP
PHP简单系统查询模块代码打包下载
2008/06/07 PHP
PHP 开源框架22个简单简介
2009/08/24 PHP
openPNE常用方法分享
2011/11/29 PHP
PHP基础知识介绍
2013/09/17 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
使用js获取QueryString的方法小结
2010/02/28 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
2013/10/24 Javascript
jquery获取选中的文本和值的方法
2014/07/08 Javascript
JS获取Table中td值的方法
2015/03/19 Javascript
JS瀑布流实现方法实例分析
2016/12/19 Javascript
移动端刮刮乐的实现方式(js+HTML5)
2017/03/23 Javascript
JS实现将对象转化为数组的方法分析
2019/01/21 Javascript
js中比较两个对象是否相同的方法示例
2019/09/02 Javascript
微信小程序用canvas画图并分享
2020/03/09 Javascript
微信小程序反编译的实现
2020/12/10 Javascript
[03:28]2014DOTA2国际邀请赛 走近EG战队天才中单Arteezy
2014/07/12 DOTA
[40:29]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第一场
2018/04/10 DOTA
Python ORM框架SQLAlchemy学习笔记之数据查询实例
2014/06/10 Python
Python之re操作方法(详解)
2017/06/14 Python
Python3中详解fabfile的编写
2018/06/24 Python
Python给定一个句子倒序输出单词以及字母的方法
2018/12/20 Python
python如何获取列表中每个元素的下标位置
2019/07/01 Python
Python中使用threading.Event协调线程的运行详解
2020/05/02 Python
Python爬虫代理池搭建的方法步骤
2020/09/28 Python
CSS3下的渐变文字效果实现示例
2018/03/02 HTML / CSS
美国校园市场:OCM
2017/06/08 全球购物
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
动物学专业毕业生求职信
2013/10/11 职场文书
办公楼租房协议书范本
2014/11/25 职场文书
辞职信格式范文
2015/05/13 职场文书
元旦主持词开场白
2015/05/29 职场文书
个人工作失误的保证书怎么写?
2019/06/21 职场文书
Vue CLI中模式与环境变量的深入详解
2021/05/30 Vue.js
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL