华为机考--题目描述
小偷来到了一个神秘的王宫,突然眼前一亮,发现5个宝贝,每个宝贝的价值都不一样,且重量也不一样,但是小偷的背包携带重量有限,所以他不得不在宝贝中做出选择,才能使偷到的财富最大,请你帮助小偷计算一下。
输入描述:
宝贝价值:6,3,5,4,6
宝贝重量:2,2,6,5,4
小偷背包容量:10
输出描述:
偷到宝贝的总价值:15
示例1
输入
6,3,5,4,6
2,2,6,5,4
10
输出
15
JS解法:
var val = [6,3,5,4,6];
var wei = [2,2,6,5,4];
var arr = [];
for (let i = 0; i < val.length; i++){
const realVal = val[i]/wei[i];
arr.push({
index:i,
val:val[i],
realVal
});
};
// 降序
arr.sort(function (a,b) {return b.realVal - a.realVal})
// 重量限制
var count = 0;
var countIndex = 0;
var countVal = 0;
for(let i = 0;i < val.length; i++){
count += wei[i];
if(count > 10){
countIndex = i-1
}
};
// 计算总价值
for(let i = 0; i < countIndex; i++){
countVal += arr[i].val
};
console.log(`偷到宝贝的总价值: ${countVal}`)
网友评论