Alfabetyczna permutacja ciągów znakowych.

0

Potrzebuje wypisania alfabetycznych permutacji ciągu znakowego. Ciąg może być od 1 do 20 liter.
Przykładowo.

a:
-a

ab:
-ab
-ba

abc:
-abc
-acb
-bac
-bca
-cab
-cba

itp 

Ciąg początkowy zawsze jest alfabetycznie oraz znaki się nie powtarzają. Dodatkowo wszystko jest z małej litery.
Czy istnieje jakieś prosty sposób by coś takiego otrzymać ?

0

Jaki język?

0

Na angielskiej wiki masz krótki opis algorytmu: http://en.wikipedia.org/wiki/Permutation#Generation_in_lexicographic_order . Więcej informacji znajdziesz w "Sztucę programowania" Knutha.

0
bogdans napisał(a):

Jaki język?

Java. Zapomniałem wspomnieć.

0

Java nie ma chyba gotowej funkcji, ale algorytm rekurencyjny jest bardzo prosty do napisania.

0

Więcej informacji znajdziesz w "Sztucę programowania" Knutha.

A czy możesz mi powiedzieć w który tomie znajdę potrzebne mi informacje.

Java nie ma chyba gotowej funkcji, ale algorytm rekurencyjny jest bardzo prosty do napisania.

Zapewne jest proste, niestety nie radzę sobie z tym.

0

Masz świadomość, że 20! = 2432902008176640000 i wypisanie tylu permutacji zajmie komputerowi trochę czasu. Przy okazji zauważyłem że mój algorytm jest nieodpowiedni dla Twojego problemu - on wpierw tworzy kolekcje wszystkich permutacji. Tak duża kolekcja może się nie zmieścić w komputerze.

1 użytkowników online, w tym zalogowanych: 0, gości: 1