01背包解决方法(真的是傻瓜都会的法子)
一个被01背包问题搞的掉发不止的屡次怀疑自身智商有问题的博主,最后还是选择了穷举法,话不多说上代码
let arr = [
{
value : 6,
weight : 2
},
{
value : 3,
weight : 2
},
{
value : 5,
weight : 6
},
{
value : 4,
weight : 5
},
{
value : 6,
weight : 4
},
{
value : 6,
weight : 4
},
{
value : 110,
weight : 4
},
]
console.time();
let numArr = []
let newArr = []
for(let i = 1; i< 1 << arr.length;i++) {
let sum = 0;
let temp = []
let count = 0
for(let j = 0;j < arr.length;j++) {
if((i & 1 << j) !== 0) {
sum += arr[j].weight;
count +=arr[j].value;
temp.push(arr[j])
}
}
if(sum === 10) {
numArr.push(count)
newArr.push(temp)
}
}
function getMax(arr) {
let max = arr[0];
let index = 0
for (var i = 0; i < arr.length; i++) {
if (max < arr[i]) {
max = arr[i];
index = i
}
}
return index;
}
let index = getMax(numArr)
console.log(newArr[index]);
console.timeEnd()