假设我有N个元素,我想创建一个元素的所有可能分组的列表,其中可以同时存在N个元素的多个组。
例如,假设我们有4个元素:a,b,c,d。设[]表示括号内的元素在分组中。我正在寻找一种算法(如果可能的话,在Matlab中),它可以创建一个列表,列出他们可以组合在一起的所有方式:
答案 0 :(得分:0)
此解决方案可以产生所有可能性:
%Generate potential solutions
p=dec2base(0:base2dec('123',4), 4);
%convert to numeric
p=[zeros(size(p,1),1) p-'0'];
for col=2:4
%sort out. in column col a new group index is used, but not all previous indices are used.
valid=max(p(:,1:col-1),[],2)+1>=p(:,col);
p=p(valid,:);
end
输出是一个标记字符的矩阵。例如,1233
在您的符号中为ab[cd]
。