2022.3.26美团笔试之7的倍数
考试用的暴力解,就通过那么点样例,今天才学的回溯,真憋屈,代码如下:
var line1='5'
var line2='-2 -6 15 4 5'
var n=parseInt(line1)
var temp=line2.split(' ')
var arr=temp.map((item)=>Number(item))
var collections=[] //最终收集的全部子集
var path=[] //子集
function track(arrs,startIndex){
collections.push(path.slice())
if (startIndex>=arrs.length) {
return ;
}
for (var i = startIndex; i < arrs.length; i++) {
path.push(arrs[i]) // 选这个数
track(arrs,i+1) // 基于选这个数,继续递归,拓展子树
path.pop() //撤销选择这个数
}
}
track(arr,0)
collections=collections.slice(1) //去除第一个空子集
console.log(collections);
var sum_arr=[] //收集每一个符合7的倍数这个条件子集的和
collections.forEach((arr_item)=>{
//针对每个子集作和,并将结果存到sum_arr中
var temp=arr_item.reduce((pre,cur)=>{
return pre+cur
},0)
if (temp%7==0) {
sum_arr.push(temp)
}
})
console.log(Math.max(...sum_arr)); 