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 相关文章推荐
js 数组的for循环到底应该怎么写?
May 31 Javascript
分享20款好玩的jQuery游戏
Apr 17 Javascript
jquery重新播放css动画所遇问题解决
Aug 21 Javascript
jQuery插件开发的五种形态小结
Mar 04 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
Jun 25 Javascript
javascript html实现网页版日历代码
Mar 08 Javascript
举例讲解如何判断JavaScript中对象的类型
Apr 22 Javascript
AngularJS压缩JS技巧分析
Nov 08 Javascript
vue-cli2.9.3 详细教程
Apr 23 Javascript
vue.js与后台数据交互的实例讲解
Aug 08 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
Sep 21 Javascript
如何使用gpu.js改善JavaScript的性能
Dec 01 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使用Jpgraph绘制柱形图的方法
2015/06/10 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
JavaScript入门教程(11) js事件处理
2009/01/31 Javascript
javascript 密码框防止用户粘贴和复制的实现代码
2014/02/17 Javascript
iframe调用父页面函数示例详解
2014/07/17 Javascript
jQuery中wrapInner()方法用法实例
2015/01/16 Javascript
JavaScript中的立即执行函数表达式介绍
2015/03/15 Javascript
jQuery获得子元素个数的方法
2015/04/14 Javascript
js实现prototype扩展的方法(字符串,日期,数组扩展)
2016/01/14 Javascript
JavaScript中三种异步上传文件方式
2016/03/06 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
JavaScript实现多栏目切换效果
2016/12/12 Javascript
JavaScript评论点赞功能的实现方法
2017/03/13 Javascript
vue中监听返回键问题
2019/08/28 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
2020/01/20 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
在Vue 中获取下拉框的文本及选项值操作
2020/08/13 Javascript
使用Python进行稳定可靠的文件操作详解
2013/12/31 Python
Python中你应该知道的一些内置函数
2017/03/31 Python
python shell根据ip获取主机名代码示例
2017/11/25 Python
使用Python爬取最好大学网大学排名
2018/02/24 Python
详解Python中的正则表达式
2018/07/08 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
2019/10/30 Python
python如何实现不用装饰器实现登陆器小程序
2019/12/14 Python
python图片指定区域替换img.paste函数的使用
2020/04/09 Python
python使用多线程+socket实现端口扫描
2020/05/28 Python
用HTML5.0制作网页的教程
2010/05/30 HTML / CSS
微软俄罗斯官方网站:Microsoft俄罗斯
2016/09/18 全球购物
MIXIT官网:俄罗斯最大的化妆品公司之一
2020/01/25 全球购物
销售总经理岗位职责
2014/03/15 职场文书
个人社会实践自我鉴定
2014/03/24 职场文书
保密工作目标责任书
2014/07/28 职场文书
学生党员批评与自我批评
2014/10/15 职场文书
领导参观欢迎词
2015/01/26 职场文书
mysql 8.0.27 绿色解压版安装教程及配置方法
2022/04/20 MySQL
3050和2060哪个好 性能差多少 差距有多大 谁更有性价比
2022/06/17 数码科技