题目:
【砝码】
现有n种砝码,重量互不相等,分别为 m1,m2,m3…mn ;
每种砝码对应的数量为 x1,x2,x3…xn 。
现在要用这些砝码去称物体的重量(放在同一侧),问能称出多少种不同的重量。
输入描述
对于每组测试数据:
第一行:n — 砝码的种数(范围[1,10])
第二行:m1 m2 m3 … mn — 每种砝码的重量(范围[1,2000])
第三行:x1 x2 x3 …. xn — 每种砝码对应的数量(范围[1,10])
解题思路:
借用set能够自动去重的特性,对每种砝码进行遍历,往set中层层叠加砝码的重量。
let m = [1, 2, 3, 4, 5, 6]
let x = [2, 3, 4, 1, 2, 4]
function getTypes(m,x){
let set = new Set([0])
for(let i =0;i<m.length;i++){
let arr = []
set.forEach(item=>{
for(let j = 0;j<=x[i];j++){
arr.push(item+m[i]*j)
}
})
arr.forEach(item=>set.add(item))
}
return set.size-1
}
console.log(getTypes(m,x))