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 相关文章推荐
让人期待的2011年度最佳 jQuery 插件分享
Mar 16 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
Dec 11 Javascript
原生js实现查找/添加/删除/指定元素的class
Apr 12 Javascript
简单的JavaScript互斥锁分享
Feb 02 Javascript
JQuery中使用ajax传输超大数据的解决方法
Jul 14 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
May 31 Javascript
JS数字千分位格式化实现方法总结
Dec 16 Javascript
深入浅析Vue.js中 computed和methods不同机制
Mar 22 Javascript
在vue中使用SockJS实现webSocket通信的过程
Aug 29 Javascript
vue动态绑定class的几种常用方式小结
May 21 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
Feb 05 Javascript
GitHub上77.9K的Axios项目有哪些值得借鉴的地方详析
Jun 15 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 文件上传源码分析(RFC1867)
2009/10/30 PHP
PHP常用处理静态操作类
2015/04/03 PHP
php curl模拟post请求和提交多维数组的示例代码
2015/11/19 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
2019/04/10 PHP
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
2010/08/05 Javascript
解决jquery的.animate()函数在IE6下的问题
2010/12/03 Javascript
基于jquery的二级联动菜单实现代码
2011/04/25 Javascript
深入分析JSONP跨域的原理
2014/12/10 Javascript
JavaScript实现给按钮加上双重动作的方法
2015/08/14 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
jQuery使用deferreds串行多个ajax请求
2016/08/22 Javascript
JS实现列表的响应式排版(推荐)
2016/09/01 Javascript
js中利用cookie实现记住密码功能
2020/08/20 Javascript
jQuery 移动端拖拽(模块化开发,触摸事件,webpack)
2016/10/28 Javascript
fullPage.js和CSS3实现全屏滚动效果
2017/05/05 Javascript
vue-resource调用promise取数据方式详解
2017/07/21 Javascript
小程序多图列表实现性能优化的方法步骤
2019/05/28 Javascript
JavaScript隐式类型转换代码实例
2020/05/29 Javascript
详解vue父子组件状态同步的最佳方式
2020/09/10 Javascript
使用python的chardet库获得文件编码并修改编码
2014/01/22 Python
python处理文本文件实现生成指定格式文件的方法
2014/07/31 Python
pandas中的DataFrame按指定顺序输出所有列的方法
2018/04/10 Python
Python实现的多叉树寻找最短路径算法示例
2018/07/30 Python
Python创建一个空的dataframe,并循环赋值的方法
2018/11/08 Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
2020/03/06 Python
Python文件操作模拟用户登陆代码实例
2020/06/09 Python
python3.5的包存放的具体路径
2020/08/16 Python
美国经典刺绣和字母儿童服装特卖:Smocked Auctions
2018/07/16 全球购物
在校学生职业规划范文
2014/01/08 职场文书
机工车间主任岗位职责
2014/03/05 职场文书
2014大学生全国两会学习心得体会
2014/03/13 职场文书
化工工艺设计求职信
2014/06/25 职场文书
领导干部学习“三严三实”思想汇报
2014/09/15 职场文书
写给老婆的保证书
2015/02/27 职场文书
退休欢送会致辞
2015/07/31 职场文书
长辈生日祝福语大全(72句)
2019/08/09 职场文书