Perumations размера N java Массив - PullRequest
0 голосов
/ 30 марта 2020

В c ++ перестановки массива могут быть сгенерированы с использованием функции next_permutation. Есть ли java эквивалент такой функции для генерации перестановок массива размера N?

Я пытаюсь придумать эквивалентную рекурсивную реализацию, но изо всех сил пытаюсь укрепить мои логи c.

1 Ответ

1 голос
/ 30 марта 2020

В 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, вы можете добавить массив в список, чтобы вы могли собрать их все в списке или просто распечатать. Твой выбор. Делай с этим как хочешь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...