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));