大小为java数组的总和

问题描述 投票:-1回答:1

在c ++中,可以使用函数next_permutation生成数组的排列。是否有Java等价的函数来生成大小为N的数组的排列?

[我试图提出一个等效的递归实现,但是努力巩固我的逻辑。

java arrays algorithm permutation
1个回答
1
投票

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方法的地方,您可以将数组添加到列表中,以便可以将它们全部收集在列表中,也可以只打印出来。你的选择。随心所欲地处理它。

© www.soinside.com 2019 - 2024. All rights reserved.