有限背包问题
- 假设有一个背包的容量为5,总共有五种商品,每种商品所占的空间为[1, 2, 3, 4, 5],对应的价值为[2, 3, 4, 5, 6],求背包能够装下商品的最大价值,以及最大价值对应的商品组合方案,条件:每种商品只能装一种【这就是有限背包问题】
- 先来讲讲我的算法思路:求出所有的商品组合方案,然后从中筛选出符合条件的商品组合方案,之后在求出每一种商品组合方案的价值,最后再求出最大的价值
- 算法的步骤如下:
一、求出所有的商品组合方案
function zero_array(length){
var array = []
for(let i=0; i<length; i++){
array.push(0)
}
return array
}
function all_plan(goods_length){
var plan_length = Math.pow(2, goods_length)
var plan_array = []
for(let i=0; i<plan_length; i++){
var array = Number(i).toString(2).split('').map(el=>+el)
var over_length = goods_length - array.length
var _array = zero_array(over_length).concat(array)
plan_array.push(_array)
}
return plan_array
}
console.log(all_plan(