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作用域容易记错的两个地方分析
Jun 22 Javascript
基于jQuery的简单九宫格实现代码
Aug 09 Javascript
基于jquery库的tab新形式使用
Nov 16 Javascript
Javacript实现颜色梯度变化和渐变的效果代码
May 31 Javascript
返回页面顶部top按钮通过锚点实现(自写)
Aug 30 Javascript
JQuery对表格进行操作的常用技巧总结
Apr 23 Javascript
8个超实用的jQuery功能代码分享
Jan 08 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
Sep 20 Javascript
使用Nuxt.js改造已有项目的方法
Aug 07 Javascript
在vue中使用axios实现post方式获取二进制流下载文件(实例代码)
Dec 16 Javascript
JavaScript中的全局属性与方法深入解析
Jun 14 Javascript
微信小程序拖拽排序列表的示例代码
Jul 08 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 session应用实例 登录验证
2009/03/16 PHP
php 分页类 扩展代码
2009/06/11 PHP
laravel配置Redis多个库的实现方法
2019/04/10 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
Javascript中eval函数的使用方法与示例
2007/04/09 Javascript
List Installed Hot Fixes
2007/06/12 Javascript
动态调用CSS文件的JS代码
2010/07/29 Javascript
JavaScript中双叹号(!!)作用示例介绍
2014/04/10 Javascript
通过$(this)使用jQuery包装后的方法或属性
2014/05/18 Javascript
javascript实现多级联动下拉菜单的方法
2015/02/06 Javascript
浅谈Javascript实现继承的方法
2015/07/06 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
2017/01/05 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
2017/07/26 Javascript
vue cli 全面解析
2018/02/28 Javascript
Vue无限滑动周选择日期的组件的示例代码
2018/07/18 Javascript
JavaScript Blob对象原理及用法详解
2020/10/14 Javascript
在vue中通过render函数给子组件设置ref操作
2020/11/17 Vue.js
[00:52]DOTA2国际邀请赛
2020/02/21 DOTA
Python中的True,False条件判断实例分析
2015/01/12 Python
Python打印斐波拉契数列实例
2015/07/07 Python
python strip() 函数和 split() 函数的详解及实例
2017/02/03 Python
Python随机读取文件实现实例
2017/05/25 Python
Python实现按照指定要求逆序输出一个数字的方法
2018/04/19 Python
pygame游戏之旅 python和pygame安装教程
2018/11/20 Python
用Python抢火车票的简单小程序实现解析
2019/08/14 Python
html5 利用canvas实现超级玛丽简单动画
2013/09/06 HTML / CSS
毕业生求职简历的自我评价
2013/10/07 职场文书
学生爱国演讲稿
2014/01/14 职场文书
护理学应聘自荐书范文
2014/02/05 职场文书
某某同志考察材料
2014/05/28 职场文书
新农村建设典型材料
2014/05/31 职场文书
幼儿园中班区域活动总结
2014/07/09 职场文书
优秀教育工作者事迹材料
2014/12/24 职场文书
挂职锻炼工作总结2015
2015/05/28 职场文书
Golang二维切片初始化的实现
2021/04/08 Golang