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 substring从右边获取指定长度字符串(示例代码)
Dec 23 Javascript
jQuery$命名冲突怎么办如何解决
Jan 16 Javascript
JS动态修改iframe内嵌网页地址的方法
Apr 01 Javascript
javascript的replace方法结合正则使用实例总结
Jun 16 Javascript
js实现select选择框效果及美化
Aug 19 Javascript
JS实现图片预览的两种方式
Jun 27 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
Dec 13 Javascript
JS字符串去除连续或全部重复字符的实例
Mar 08 Javascript
使用rollup打包JS的方法步骤
Dec 05 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
May 22 Javascript
vue 通过绑定事件获取当前行的id操作
Jul 27 Javascript
Vue 实现对quill-editor组件中的工具栏添加title
Aug 03 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生成的html meta和link标记在body标签里 顶部有个空行
2010/05/18 PHP
解决File size limit exceeded 错误的方法
2013/06/14 PHP
PHP中应该避免使用同名变量(拆分临时变量)
2015/04/03 PHP
PHP用反撇号执行外部命令
2015/04/14 PHP
PHP Yii框架之表单验证规则大全
2015/11/16 PHP
div移动 输入框不能输入的问题
2009/11/19 Javascript
用jquery实现学校的校历(asp.net+jquery ui 1.72)
2010/01/01 Javascript
关于Jqzoom的使用心得 jquery放大镜效果插件
2010/04/12 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/03 Javascript
JS操作Cookies的小例子
2013/10/15 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
2013/12/10 Javascript
js 阻止子元素响应父元素的onmouseout事件具体实现
2013/12/23 Javascript
网页右侧悬浮滚动在线qq客服代码示例
2014/04/28 Javascript
javascript生成不重复的随机数
2015/07/17 Javascript
JS前向后瞻正则表达式定义与用法示例
2016/12/27 Javascript
让bootstrap的carousel支持滑动滚屏的实现代码
2017/11/27 Javascript
vue.js template模板的使用(仿饿了么布局)
2018/08/13 Javascript
webpack4+Vue搭建自己的Vue-cli项目过程分享
2018/08/29 Javascript
jQuery实现的别踩白块小游戏完整示例
2019/01/07 jQuery
jquery操作checkbox的常用方法总结【附测试源码下载】
2019/06/10 jQuery
vue实现简单的日历效果
2020/09/24 Javascript
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
vue配置多代理服务接口地址操作
2020/09/08 Javascript
Python psutil模块简单使用实例
2015/04/28 Python
python实现从网络下载文件并获得文件大小及类型的方法
2015/04/28 Python
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
分析python切片原理和方法
2017/12/19 Python
VSCode中自动为Python文件添加头部注释
2019/11/14 Python
opencv-python 读取图像并转换颜色空间实例
2019/12/09 Python
python正则表达式的懒惰匹配和贪婪匹配说明
2020/07/13 Python
德国滑雪和户外用品网上商店:XSPO
2019/10/30 全球购物
工艺工程师工作职责
2013/11/23 职场文书
交通事故检查书范文
2014/01/30 职场文书
低碳日宣传活动总结
2014/07/09 职场文书
「地球外少年少女」BD发售宣传CM公开
2022/03/21 日漫
python数字图像处理数据类型及颜色空间转换
2022/06/28 Python