【发布时间】:2020-07-11 03:43:12
【问题描述】:
在 C++ 中,可以使用函数 next_permutation 生成数组的排列。有没有类似这种函数的 java 等价物来生成大小为 N 的数组的排列?
我正在尝试提出一个等效的递归实现,但正在努力巩固我的逻辑。
【问题讨论】:
-
std::next_permutation 提供了可能的 (C++) 实现。
标签: java arrays algorithm permutation
在 C++ 中,可以使用函数 next_permutation 生成数组的排列。有没有类似这种函数的 java 等价物来生成大小为 N 的数组的排列?
我正在尝试提出一个等效的递归实现,但正在努力巩固我的逻辑。
【问题讨论】:
标签: java arrays algorithm permutation
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 方法的地方,您可以将数组添加到列表中,这样您就可以将它们全部收集到一个列表中,或者您可以将其打印出来。你的选择。随心所欲。
【讨论】: