数组已知、项数N已知、和M已知(假设N为9,M为100)求这个算法的思路或者核心代码,谢谢!只需要求出一种情况就行了
2 回答
holdtom
TA贡献1805条经验 获得超10个赞
瞎写了一个~functionf(arr,m,n){if(m===0&&n===0){return[];}if(arr.length<=0||n<=0){returnnull;}varfirst=arr[0];varrest=arr.slice(1,arr.length);//使用第一个元素varresult1=f(rest,m-first,n-1);if(result1){return[first].concat(result1);}//不使用第一个元素varresult2=f(rest,m,n);if(result2){returnresult2;}returnnull;}vararr=[1,3,5,7,9]console.log(f(arr,13,2));算法相当于深度优先搜索,用递归实现。f(arr,m,n)就是要求解的值,对于任意答案,都只有2种可能,要么包含arr的第一个元素,要么不包含。所以f(arr,m,n)等于第一个元素接着f(arr去掉第一个元素,m-第一个元素的值,n-1)或者等于f(arr去掉第一个元素,m,n)然后做好边界条件判断就行了。
添加回答
举报
0/150
提交
取消