题目描述
现有n种砝码,重量互不相等,分别为 m1,m2,m3…mn ;
每种砝码对应的数量为 x1,x2,x3…xn 。现在要用这些砝码去称物体的重量(放在同一侧),问能称出多少种不同的重量。
注:称重重量包括 0
数据范围:每组输入数据满足
1
≤
n
≤
10
1≤n≤10
1≤n≤10 ,
1
≤
m
i
≤
2000
1≤m_{i} ≤2000
1≤mi≤2000 ,
1
≤
x
i
≤
10
1≤x _{i} ≤10
1≤xi≤10
输入描述:
对于每组测试数据:
第一行:n — 砝码的种数(范围[1,10])
第二行:m1 m2 m3 … mn — 每种砝码的重量(范围[1,2000])
第三行:x1 x2 x3 … xn — 每种砝码对应的数量(范围[1,10])
输出描述:
利用给定的砝码可以称出的不同的重量数
示例1
输入:2
1 2
2 1
输出:5
题解
下面展示本人题解思路代码。
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
let weight = await readline()
weight = weight.split(' ').map(Number)
let nums = await readline()
nums = nums.split(' ').map(Number)
let set = new Set([0])
for(let i=0;i<line;i++){
let arr=[...set]
for(let j=1;j<=nums[i];j++){
arr.forEach(item=>{
set.add(item+weight[i]*j)
})
}
}
console.log(set.size)
}
}()
文章系原创,在阅读过程中如若有误,劳请指正;如若有妙解、疑惑也欢迎大家和我交流,感谢!