我试图使用编码器将我在matlab中的部分功能转换为c ++.编码器不支持该功能perms.我perms在我的代码中广泛使用.在线查看后,我发现很少有关于如何生成所有排列列表的建议,perms但是它是"手动"完成的,这意味着对于3个元素的排列,我们有3个for循环,4个元素我们有4个循环,等等.
示例1:4:
row = 1;
n=a;
Z = zeros(factorial(n),n);
idxarray1=[1:4];
for idx=idxarray1
idxarray2=idxarray1(find(idxarray1~=idx)) ;
for jdx=idxarray2
idxarray3=idxarray2(find(idxarray2~=jdx));
for kdx=idxarray3
idxarray4=idxarray3(find(idxarray3~=kdx)) ;
for mdx=idxarray4
Z(row,:) = [idx,jdx,kdx,mdx];
row = row + 1 ;
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
对于8个元素,我必须编写8个for循环,有关如何为n个元素转换它的任何建议吗?就像是
for i=n:-1:1
I=[1:n] ;
for j=1:i
J=I(find(I~=j));
... ?
thank you
Run Code Online (Sandbox Code Playgroud)