您的位置:首页
背包算法练习--求小于某数字的数组最大和:
2017-05-01 11:46
260 查看
思路:
1. 假设当前剩余总和小于最大值:
a.循环当前剩余数字
b.递归运行
c. 用一个变量bestS存小于最大值情况下的最大总和
1. 假设当前剩余总和小于最大值:
a.循环当前剩余数字
b.递归运行
c. 用一个变量bestS存小于最大值情况下的最大总和
var bestS = {val:0,str:""}; var LIMIT ; Array.prototype.sum = function(){ var s = 0; for(var i = 0;i < this.length;i++){ s+= this[i]; } return s; } function f(bagArr,copyArr,start){ var arrS = copyArr.sum(); if(arrS < LIMIT && arrS > bestS.val){ bestS = arrS > bestS.val ? {val:arrS,str:copyArr.join(',')} : bestS; } for(var i = start;i<bagArr.length;i++){ copyArr.push(bagArr[i]); f(bagArr,copyArr,i+1); copyArr.splice(copyArr.length-1,1); } } LIMIT = 197; f(new Array(49,28,119,50,78,48,29,49,52,48,29,49,52,48,29,49,52),new Array(),0); console.log(bestS);
相关文章推荐
- 背包算法练习--求小于某数字的数组最大和:
- .NET复习第二天 练习数字交换,字符串转换 求数组最大值 快捷键的使用
- 算法练习六:旋转数组的最小数字
- [算法导论]练习4.1-5最大连续子数组问题
- 算法练习——排序后的数组删除重复数字
- 练习4.1-5最大子数组线性算法及证明
- 排列数组中数字得出最大数算法
- 剑指offer-算法题练习:part6 旋转数组的最小数字
- 【算法练习】找出数组中仅出现一次的数字
- 【算法】最大值和最小值的差小于或者等于num的子数组数量
- [算法练习]从一个正数数组中找出重复的数,假设数组的值的范围都小于65536
- 算法题-最大值减去最小值小于或等于 num 的子数组数量
- 蓝桥杯练习系统算法训练——求数组最大值
- 算法题-最大值减去最小值小于或等于 num 的子数组数量
- 算法练习 -- DP 查找和为指定数字的数组
- 算法实验一:二分查找算法改进: 当搜索元素x不存在时,返回小于x的最大元素位置i和大于x的最小元素位置j. 当搜索元素在数组中时,i和j相同,均为x在数组中的位置。
- 【左神算法课】子数组最大差值小于某阈值,求满足条件的子数组个数
- 大学时候想的一个算法——计算数组中最大和序列
- 每天一道算法题10 找出数组中两个只出现一次的数字
- 2844 Coins hdu 一些数字生成小于等于m的数的个数转换成多重背包问题