在c ++中,可以使用函数next_permutation
生成数组的排列。是否有Java等价的函数来生成大小为N的数组的排列?
[我试图提出一个等效的递归实现,但是努力巩固我的逻辑。
java中没有像这样的内置函数。您必须创建自己的程序,这并不那么复杂。我将暂时为该答案提供一个解决方案(不一定是最佳解决方案)的编辑]
public static void printperms(int[] perm, boolean[] used, int k)
{
if (k == perm.length) print(perm);
for (int i=0; i<perm.length; i++) {
if (!used[i]) {
used[i] = true;
perm[k] = i;
printperms(perm, used, k+1);
used[i] = false;
}
}
}
然后您可以像这样创建一个新方法:
public void perms(int n){
printperms(new int[n], new boolean[n], 0);
}
最后,在使用print
方法的地方,您可以将数组添加到列表中,以便可以将它们全部收集在列表中,也可以只打印出来。你的选择。随心所欲地处理它。