Załóżmy, że mamy alfabet "abcdefghiklimnop". Jak rekurencyjnie generować permutacje z powtarzaniem tego alfabetu w grupach FIVE w efektywny sposób?Generowanie wszystkich permutacji o określonej długości
Walczę z tym od kilku dni. Wszelkie opinie będą pomocne.
Zasadniczo to jest takie samo jak: Generating all permutations of a given string
Jednakże, po prostu chcę permutacji o długości pięciu całego łańcucha. I nie udało mi się tego rozgryźć.
SO dla wszystkich podciągów o długości 5 "abcdefghiklimnop", znajdź permutacje podłańcucha. Na przykład, jeśli podciągu był abcdef, chciałbym wszystkie permutacje tego, lub jeśli substring był defli, chciałbym wszystkie permutacje tego podłańcucha. Poniższy kod daje mi wszystkie permutacje ciągu, ale chciałbym użyć do znalezienia wszystkich permutacji wszystkich podciągów o rozmiarze 5 ciągu.
public static void permutation(String str) {
permutation("", str);
}
private static void permutation(String prefix, String str) {
int n = str.length();
if (n == 0) System.out.println(prefix);
else {
for (int i = 0; i < n; i++)
permutation(prefix + str.charAt(i), str.substring(0, i) + str.substring(i+1, n));
}
}
Nie możesz ich wszystkich wygenerować, a następnie zapętlić je wszystkie i zabrać pierwsze 5 znaków? –
@ cricket_007 Spowoduje to wiele powtórzeń. Poza tym OP wymaga efektywnego sposobu generowania ich wszystkich. – dasblinkenlight
@dasblinkenlight - Ah, brakowało słowa "wydajny" –