我觉得我逻辑没问题,通过率90%,18/20, 但是三重循环超内存了。。。
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
let arr= [];
while(line = await readline()){
arr.push(line);
}
let count = parseInt(arr[0]);
let weight = arr[1].split(' ').map(Number);
let num = arr[2].split(' ').map(Number);
let group = [0]; // 包含0,先把0放进去
for(let i=0;i<count;i++){
let j=1;
let gl = group.length; // 注意这里取一下数组长度,不能在下面用group.length,否则会陷入无限循环
while(j<=num[i]){
for(let k=0;k<gl;k++){
let tmp = weight[i]*j + group[k]; // 在此之前的每一个都加上这个元素
group.push(tmp);
}
j++;
}
}
let my_set = new Set(group); // 去重
console.log(my_set.size);
}()

京公网安备 11010502036488号