背包算法练习--求小于某数字的数组最大和:

来源:互联网 发布:淘宝和阿里巴巴的关系 编辑:程序博客网 时间:2024/05/01 18:05

思路:

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){var arrS = bagArr.sum();if(arrS < LIMIT){bestS = arrS > bestS.val ? {val:arrS,str:bagArr.join(',')} : bestS; return;}for(var i = 0;i<bagArr.length;i++){var copyArr = new Array();for(var j = 0;j < bagArr.length;j++){copyArr.push(bagArr[j]);}copyArr.splice(i,1);f(copyArr);}}LIMIT = 197;f(new Array(49,28,119,50,78,48,29,49,52));console.log(bestS);


0 0
原创粉丝点击