猿问

请教一个算法题,谢谢

有一组数字[0,1,2,3,4,5,6,7,8,9],现给出一个数字,比如3,要求从该组数字中选出相加等于3的组合(相加的数字3个),如0+0+3=3,0+1+2,3个相加的数字不能相同(如1+1+1就不行),无顺序要求。大概函数是这样fun(数组,和值,3),得到的是组合的个数.参数3是相加的数字个数,这里规定是3,如0+0+3,这是3个数字
森栏
浏览 375回答 2
2回答

一只名叫tom的猫

递归查找符合规则的元素集合:部分逻辑是建立在认为集合中所有元素都是正数的基础上(()=>{vararr=[0,1,2,3,4,5,6,7,8,9]console.log(calc(arr,3,3))//0,1,2console.log(calc(arr,3,1))//3functioncalc(arr,total,count,feed=[]){if(count===1){//checkreturnarr.includes(total)?feed.concat(total):null}elseif(count>1){//removebignumberarr=arr.filter(item=>item

红糖糍粑

请参考以下python代码实现#-*-coding:utf-8-*-"""author:李毅"""fromunittestimportTestCasedefpermutation(array,nsum):'''假设数组元素不重复。'''#排序(升序)sarray=sorted(array)#找出最大下标max_idx=len(sarray)fori,einenumerate(sarray):ife>nsum:max_idx=ibreak#穷举result=[]foriinrange(max_idx):forjinrange(i,max_idx):forkinrange(j,max_idx):ifi==jandj==k:continueifsarray[i]+sarray[j]+sarray[k]==nsum:result.append((sarray[i],sarray[j],sarray[k]))returnresultclassTest(TestCase):"""单元测试"""deftest_permutation(self):self.assertEqual(permutation(range(10),3),[(0,0,3),(0,1,2)])self.assertEqual(permutation(range(10),2),[(0,0,2),(0,1,1)])#边界值self.assertEqual(permutation(range(3),3),[(0,1,2)])self.assertEqual(permutation(range(1,4),4),[(1,1,2)])
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答