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代码格式化和语法着色V2
Oct 14 Javascript
Javascript MD4
Dec 20 Javascript
textarea中的手动换行处理的jquery代码
Feb 26 Javascript
javascript中加号(+)操作符的一些神奇作用
Jun 06 Javascript
js实现防止被iframe的方法
Jul 03 Javascript
jQuery 插件实现随机自由弹跳气泡样式
Jan 12 Javascript
JavaScript获取select中text值的方法
Feb 13 Javascript
jQuery获取Table某列的值(推荐)
Mar 03 Javascript
微信小程序手势操作之单触摸点与多触摸点
Mar 10 Javascript
angularjs实现上拉加载和下拉刷新数据功能
Jun 12 Javascript
javaScript日期工具类DateUtils详解
Dec 08 Javascript
Angular2之二级路由详解
Aug 31 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
基于PHP5魔术常量与魔术方法的详解
2013/06/13 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
2017/04/27 PHP
js中实现多态采用和继承类似的方法
2014/08/22 Javascript
自定义百度分享的分享按钮
2015/03/18 Javascript
javascript实现输出指定行数正方形图案的方法
2015/08/03 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
完美实现八种js焦点轮播图(上篇)
2016/07/18 Javascript
关于数据与后端进行交流匹配(点亮星星)
2016/08/03 Javascript
微信小程序 JS动态修改样式的实现代码
2017/02/10 Javascript
jQuery插件之validation插件
2017/03/29 jQuery
JS实现无缝循环marquee滚动效果
2017/05/22 Javascript
Vue2.0 从零开始_环境搭建操作步骤
2017/06/14 Javascript
浅谈JavaScript find 方法不支持IE的问题
2017/09/28 Javascript
H5实现仿flash效果的实现代码
2017/09/29 Javascript
Vue条件循环判断+计算属性+绑定样式v-bind的实例
2018/09/18 Javascript
VUE实现可随意拖动的弹窗组件
2018/09/25 Javascript
vue中el-upload上传图片到七牛的示例代码
2018/10/19 Javascript
elementUI中Table表格问题的解决方法
2018/12/04 Javascript
javascript实现倒计时提示框
2021/03/02 Javascript
[02:49:21]2019完美盛典全程录像
2019/12/08 DOTA
Python编程argparse入门浅析
2018/02/07 Python
TensorFlow saver指定变量的存取
2018/03/10 Python
python3 flask实现文件上传功能
2020/03/20 Python
Python中is和==的区别详解
2018/11/15 Python
python抓取搜狗微信公众号文章
2019/04/01 Python
python 随机森林算法及其优化详解
2019/07/11 Python
Django框架 Pagination分页实现代码实例
2019/09/04 Python
python数据类型强制转换实例详解
2020/06/22 Python
Python如何读取、写入CSV数据
2020/07/28 Python
利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位
2013/01/23 HTML / CSS
逻辑链路控制协议
2016/10/01 面试题
党员公开承诺书范文
2014/03/25 职场文书
团队经理竞聘书
2014/03/31 职场文书
2014年应急工作总结
2014/12/11 职场文书
2016年村干部公开承诺书(公开承诺事项)
2016/03/25 职场文书
2016年幼儿园教研活动总结
2016/04/05 职场文书