Es gibt einige ähnliche Fragen auf der Seite, die etwas geholfen haben, aber ich kann dieses Problem nicht ganz festhalten, also hoffe ich, dass sich das nicht wiederholt.
Dies ist eine Hausaufgabe, bei der Sie ein festgelegtes Array von Zeichen [A, B, C] haben und Rekursion verwenden müssen, um alle Permutationen (mit Wiederholung) zu erhalten. Der Code, den ich habe, macht das so:
%Vor%Allerdings sollte der Parameter n die Länge der Ausgabe definieren. Während also diese Funktion alle Permutationen der Länge 3 ausgibt, kann sie nicht die Länge 2 haben. Ich habe alles versucht, was mir einfällt, und habe über Google nachgedacht Suchergebnisse, und ich bin mit mir selbst verschärft, weil ich nicht in der Lage bin, ein scheinbar einfaches Problem zu lösen.
Wenn ich richtig verstanden habe, erhalten Sie eine Menge von Zeichen c
und die gewünschte Länge n
.
Technisch gibt es keine Permutation mit Wiederholung. Ich nehme an, dass Sie alle Zeichenfolgen der Länge n
mit Buchstaben von c
wollen.
Sie können es so machen:
%Vor%Im Code:
%Vor%Ich benutze diese Java-Realisierung von Permutationen mit Wiederholungen. A ~ (n, m): n = Länge der Anordnung, m = k. m kann größer oder kleiner als n sein.
%Vor%Beispielausgabe ist
%Vor%Ich hatte gerade eine Idee. Was ist, wenn Sie ein verstecktes Zeichen (H für versteckt) [A, B, C, H] hinzugefügt haben, dann haben Sie alle Permutationen mit fester Länge gemacht (Sie sagten, Sie wissen, wie man das macht). Wenn Sie es dann ablesen, hören Sie bei dem versteckten Zeichen auf, z. [B, A, H, C] würde (B, A) werden.
Hmm, der Nachteil ist, dass Sie verfolgen müssten, welche Sie erstellt haben, obwohl [B, H, A, C] dasselbe ist wie [B, H, C, A]
Hier ist c # Version, um die Permutationen einer gegebenen Zeichenfolge mit Wiederholungen zu erzeugen:
(wesentliche Idee ist - Anzahl der Permutationen von String der Länge 'n' mit Wiederholungen ist n ^ n).
%Vor%Nachfolgend finden Sie die entsprechenden Komponententests:
%Vor%Tags und Links java arrays permutation recursion