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隐藏控件的方法
Sep 21 Javascript
从数据库读取数据后将其输出成html标签的三种方法
Oct 13 Javascript
js实现网站最上边可关闭的浮动广告条代码
Sep 04 Javascript
利用node.js搭建简单web服务器的方法教程
Feb 20 Javascript
js实现随机数字字母验证码
Jun 19 Javascript
关于jQuery里prev()的简单操作代码
Oct 27 jQuery
解决jquery有正确返回值但不执行success函数的问题
Aug 20 jQuery
Node.js Buffer模块功能及常用方法实例分析
Jan 05 Javascript
JS正则表达式封装与使用操作示例
May 15 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
Sep 24 Javascript
JS实现横向轮播图(中级版)
Jan 18 Javascript
js实现鼠标滑动到某个div禁止滚动
Sep 17 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文件操作实现代码分享
2011/09/01 PHP
PHP解决URL中文GBK乱码问题的两种方法
2014/06/03 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
2015/03/18 PHP
PHP和C#可共用的可逆加密算法详解
2015/10/26 PHP
Zend Framework动作助手Json用法实例分析
2016/03/05 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
2016/07/21 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
2016/11/07 PHP
把textarea中字符串里含有的回车换行替换成<br>的javascript代码
2007/04/20 Javascript
extjs 学习笔记(一) 一些基础知识
2009/10/13 Javascript
JS获取页面窗口大小的代码解读
2011/12/01 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
2013/05/07 Javascript
jQuery实现的漂亮表单效果代码
2015/08/18 Javascript
jq checkbox 的全选并ajax传参的实例
2017/04/01 Javascript
微信小程序 仿美团分类菜单 swiper分类菜单
2017/04/12 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
打造通用的匀速运动框架(实例讲解)
2017/10/17 Javascript
详解JavaScript的BUG和错误
2018/05/07 Javascript
微信小程序分包加载代码实现方法详解
2019/09/23 Javascript
JS实现随机抽选获奖者
2019/11/07 Javascript
基于leaflet.js实现修改地图主题样式的流程分析
2020/05/15 Javascript
js实现时间日期校验
2020/05/26 Javascript
[50:58]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 Mineski vs EG
2018/04/03 DOTA
Python不规范的日期字符串处理类
2014/06/10 Python
python嵌套函数使用外部函数变量的方法(Python2和Python3)
2016/01/31 Python
从头学Python之编写可执行的.py文件
2017/11/28 Python
python使用Turtle库绘制动态钟表
2018/11/19 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
2019/05/18 Python
PyQt5下拉式复选框QComboCheckBox的实例
2019/06/25 Python
PHP统计代码行数的小代码
2019/09/19 Python
CSS3动画之利用requestAnimationFrame触发重新播放功能
2019/09/11 HTML / CSS
button在IE6/7下的黑边去除方案
2012/12/24 HTML / CSS
纯css3实现走马灯效果
2014/12/26 HTML / CSS
个人简历中自我评价
2014/02/11 职场文书
工地例会施工汇报材料
2014/08/22 职场文书
2014年班组长工作总结
2014/11/20 职场文书
数学教师求职信范文
2015/03/20 职场文书