有两个变量:i
和j
。
i
从1运行到固定常量N. j
从1运行到M(i)
,这意味着我们有一个数组
M=zeros(N,1);
M=[3,2,5,4];
同样S
是一组10个整数。对应于每个i
,我必须找到从S
到给定最大限制M(i)
选择数字的所有可能方法。
我的代码:
desired_enumerations={};
for i=1:N
for j=1:M(i)
a = combnk(S,j);
for k=1:size(a,1)
desired_enumerations{end+1,1}=a(k,:);
end
end
end
我的问题:
我想在double for循环之外预先计算S
最多max(M)
个元素的所有子集,然后在for循环中使用该数据,这样我就不必枚举了双循环内的子集,避免重复计算。
有效的方法是什么?
修改
如果有人也可以用big-O表示法给出代码的时间复杂性,那么也是一个奖励。或者我可以打开一个新问题。