为了账号安全,请及时绑定邮箱和手机立即绑定

算法:一个数组中有N项的和为M,求N项分别是什么

算法:一个数组中有N项的和为M,求N项分别是什么

慕仙森 2019-05-25 16:10:43
数组已知、项数N已知、和M已知(假设N为9,M为100)求这个算法的思路或者核心代码,谢谢!只需要求出一种情况就行了
查看完整描述

2 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

可以相同么??m/n;也可以弄几个随机数相加小于100,然后剩下平均,不然
就像和为0的两个数,【1,-1】,【2,-2】这无穷的啊
                            
查看完整回答
反对 回复 2019-05-25
?
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)然后做好边界条件判断就行了。
                            
查看完整回答
反对 回复 2019-05-25
  • 2 回答
  • 0 关注
  • 640 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信