Witam!
Ostatnio staram się z zrozumieć podstawowe programy wykorzystujące algorytm typu brute force i potrzebuję waszej pomocy.
Chcę stworzyć metodę, która wypisze mi wszystkie możliwe wyrażenia, które można stworzyć korzystając z podanej tablicy znaków. Wiem jak to zrobić korzystając z pętli for
, lecz jest ona nieelastyczna względem długości poszukiwanej wartości. Moim zadaniem jest stworzyć metodę rekurencyjną, która będzie przyjmowała długość hasła oraz tablicę dostępnych znaków.
W internecie jest parę przykładów (osobiście piszę w Javie), jednak nie wyczyn skopiować to, co ktoś napisał. Ja chcę zrozumieć sposób tworzenia takiej metody oraz jej działanie krok po kroku.
Przykład
Długość wyrażenia: 3 znaki.
Tablica znaków: {a, b, c}
Wynik:
a, a, a
a, a, b
a, a, c
a, b, a
a, b, b
a, b, c
a, c, a
a, c, b
a, c, c
b, a, a
b, a, b
b, a, c
b, b, a
b, b, b
b, b, c
b, c, a
b, c, b
b, c, c
c, a, a
c, a, b
c, a, c
c, b, a
c, b, b
c, b, c
c, c, a
c, c, b
c, c, c
Ze względu na mój oporny umysł poproszę o najłatwiejsze przedstawienie problemu - rozbicie go na najmniejsze części, aby łatwiej było mi go przyswoić.
Oto co znalazłem w internecie, za ewentualny duplikat przepraszam.
http://4programmers.net/Forum/Newbie/160002-metoda_brute_force_-_jak_polaczyc_sie_z_interfejsem?p=1024509#id1024509
http://stackoverflow.com/questions/14094864/explain-brute-force-algorithm
[algorytmika] Permutacje
Permutacje. Sprawdzenie