我正在尝试使用编码器将我在 matlab 中的部分函数转换为 c++。Coder 不支持该功能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
对于 8 个元素,我必须编写 8 个 for 循环,关于如何为 n 个元素转换它的任何建议?就像是
for i=n:-1:1
I=[1:n] ;
for j=1:i
J=I(find(I~=j));
... ?
thank you