'Permutation' (wörter der länge m aus alphabet)

Hallo,

ich bin JAVA Anfänger und habe ein Problem bei dem ich nicht weiter komme.

Ich bin auf der Suche nach einem Weg um alle möglichen Worte, der Länge m die man mit den 4 Buchstaben A B C D bilden kann, zu finden (ähnlich von Permutationen).

Es sind immer die die 4 Buchstaben A B C D, (es zählen auch z.B. „AA“, „BB“)
also bei m=1: A, B ,C und D bzw.
bei m=2: AA, AB, AC, AD, BA, BB, BC, BD, CA, CB, CC, CD, DA, DB, DC, DD.

Ich habe zwar Einiges im Internet zu Permutationen gefunden, jedoch sind die Lösungen kompliziert da sie sich oft auf n Elemente beziehen und nicht nur auf 4.

(Vielleicht kennt jemand eine rekursive Methode.)

Vielen Dank im voraus.

Also im Grunde handelt es sich um alle möglichen Kombinationen

Eigentlich ist es das selbe, wie wenn man Hexadezimale oder binäre zahlenmöglichkeiten berechnet.

anhand von dem beispiel binär (in diesem zahlensystem gibt es nur die ziffern 0 und 1, im gegensatz zu unserem dezimalen system mit den ziffern 0-9):

eine Stelle kann 2 Zustände haben (0,1) => bei einer Stelle gibt es 2^1 mögliche Werte: eben 0 und 1
bei zB 3 Stellen mit 2 möglichen Zifferzuständen haben wir 2^3 Möglichkeiten, also 8 (000, 001, 010, 011, 100, 101, 110, 111)

Genau dasselbe hast auch du. Du hast 4 Werte, die eine Ziffer annehmen kann (A-D). Wenn du weißt, wieviele Zeichen erlaub sind, kannst du folgendermaßen rechnen:

4 hoch n (wenn man eben ‚n‘ stellen/buchstaben hat)

Hoffe, das hat dir ein wenig geholfen :smile:

Glaube ich habe eine lösung gefunden:

private static void getCombinations(char[] alphabet, int m, String s) {
if(m == 0) {
System.out.println(s);
} else {
for(char _s : alphabet) {
getCombinations(alphabet, m-1, s+_s);
}

}