有n个数,从中取m个(可重复)相加得到t.怎么得到取出来的所有组合.不管用什么程序.但最好是matlab!

问题描述:

有n个数,从中取m个(可重复)相加得到t.怎么得到取出来的所有组合.不管用什么程序.但最好是matlab!
1个回答 分类:综合 2014-10-17

问题解答:

我来补答
clear;clc
A=[11 22 33 44 55],m=3,%自己改
n=length(A);
idx=nchoosek(1:n+m-1,m)-repmat(0:m-1,nchoosek(n+m-1,m),1);
B=A(idx)
再问: 朋友,你的这个代码我试了。好像是n个数取m个进行可重复搭配吧。但我想知道的是从n个数中取m个相加为t的所有组合该用什么程序去找!
再答: 哦,会错意了,我还以为你要算所有组合下可能得到的和呢。 那你就把这些和用t筛选出来不就行了么。 clear;clc; A=[11 22 33 44 55],m=3,t=77%自己改 n=length(A); idx=nchoosek(1:n+m-1,m)-repmat(0:m-1,nchoosek(n+m-1,m),1); B=A(idx); B=B(sum(B,2)==t,:)
 
 
展开全文阅读
剩余:2000