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获取网站Alexa排名的代码
Dec 12 Javascript
jquery中dom操作和事件的实例学习-表单验证
Nov 30 Javascript
JS实现点击下载的小例子
Jul 10 Javascript
js实现图片旋转的三种方法
Apr 10 Javascript
Jquery Ajax方法传值到action的方法
May 11 Javascript
JavaScript获取页面中超链接数量的方法
Nov 09 Javascript
Jquery插件easyUi实现表单验证示例
Dec 15 Javascript
学习使用AngularJS文件上传控件
Feb 16 Javascript
微信小程序  简单实例(阅读器)的实例开发
Sep 29 Javascript
Array数组对象中的forEach、map、filter及reduce详析
Aug 02 Javascript
javacript replace 正则取字符串中的值并替换【推荐】
Sep 13 Javascript
vue el-upload上传文件的示例代码
Dec 21 Vue.js
基于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
linux下 C语言对 php 扩展
2008/12/14 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
2016/04/15 PHP
php使用curl详细解析及问题汇总
2016/08/11 PHP
Mootools 1.2教程 同时进行多个形变动画
2009/09/15 Javascript
javascript options属性集合操作代码
2009/12/28 Javascript
JQuery 确定css方框模型(盒模型Box Model)
2010/01/22 Javascript
详细讲解JS节点知识
2010/01/31 Javascript
js中判断Object、Array、Function等引用类型对象是否相等
2012/08/29 Javascript
React-Native中禁用Navigator手势返回的示例代码
2017/09/09 Javascript
ES6扩展运算符用法实例分析
2017/10/31 Javascript
详解vue-router 命名路由和命名视图
2018/06/01 Javascript
ES6顶层对象、global对象实例分析
2019/06/14 Javascript
js中火星坐标、百度坐标、WGS84坐标转换实现方法示例
2020/03/02 Javascript
原生js 实现表单验证功能
2021/02/08 Javascript
web.py中调用文件夹内模板的方法
2014/08/26 Python
python输入错误密码用户锁定实现方法
2017/11/27 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
2018/02/21 Python
对python中xlsx,csv以及json文件的相互转化方法详解
2018/12/25 Python
Python3 导入上级目录中的模块实例
2019/02/16 Python
python之生产者消费者模型实现详解
2019/07/27 Python
python实现画出e指数函数的图像
2019/11/21 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
2020/05/13 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
Swisse官方海外旗舰店:澳大利亚销量领先,自然健康品牌
2017/12/15 全球购物
英国工作场所设备购买网站:Slingsby
2019/05/03 全球购物
维氏瑞士军刀英国网站:Victorinox英国
2019/07/04 全球购物
STRATHBERRY苏贝瑞包包官网:西班牙高级工匠手工打造
2020/11/10 全球购物
季度思想汇报
2014/01/01 职场文书
优秀的应届生自荐信
2014/05/23 职场文书
2015年机关党委工作总结
2015/05/23 职场文书
2016十一国庆节感言
2015/12/09 职场文书
mysql优化
2021/04/06 MySQL
MySQL EXPLAIN输出列的详细解释
2021/05/12 MySQL
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
2021/07/07 Servers