1. Wiederholbare Anordnung: ABC hat drei Zeichen und alle Saiten von Länge 3, AAA, AAB, AAC ...... CCC hat insgesamt 27 Arten
Mit der Idee der Rekursion kann das erste Zeichen aus ABC und drei Möglichkeiten ausgewählt werden. Dann wird das Problem in einen Fall umgewandelt, in dem ABC aus Länge von Längen besteht. Nach der Schleife können alle Möglichkeiten gefunden werden. Steuern Sie einfach die Schleifenausgangsbedingungen.
Rekursion kann verwendet werden, um es zu verarbeiten, und wenn die Charakterlänge nicht bekannt ist, ist es eine allgemeine Verarbeitung. Wenn Sie die Länge kennen, müssen Sie nur mehrere Schleifen verwenden, um Schlussfolgerungen zu ziehen.
öffentliche Klasse Permutation {public static void main (String [] args) {char [] chs = {'a', 'b', 'c'}; per (New Char [3], CHS, 3-1); } public static void pro (char [] buf, char [] chs, int len) {if (len == -1) {für (int i = buf.length -1; i> = 0; --i) system.out.print (buf [i]); System.out.println (); zurückkehren; } für (int i = 0; i <chs.length; i ++) {buf [len] = chs [i]; per (buf, chs, len-1); }}}Wiederholbare Auswahl, insgesamt 27 Situationen, die Ergebnisse sind in der folgenden Abbildung dargestellt
2. Vollständiges Arrangement: Noch drei Zeichen ABC, vollständige Anordnung bedeutet, dass Zeichen nicht wiederholt werden können. Last 3*2 = 6 Ergebnisse
Sie können die Methode in 1 verwenden, und solange Sie feststellen, ob die drei Zeichen gleich sind, ist die in der vollständigen Anordnung, die nicht gleich ist, derjenige, der benötigt wird. Eine solche Zeitkomplexität ist n^n und die Art der vollständigen Anordnung ist n! Also müssen wir eine Art n entwerfen! Algorithmus.
Sie können auch Rekursion verwenden. Es gibt N-Auswahlmöglichkeiten für die erste Zeichenfolge, und der Rest wird zum N-1-Skala-Rekursionsproblem. Die N -Auswahl für das erste Zeichen befinden sich alle in der Zeichenfolge. Daher kann das erste Zeichen verwendet werden, um es mit der Position von 1-n auszutauschen, um die Situation in N zu erhalten, und dann die Skala von N-1 rekursiv verarbeiten. Nach der Verarbeitung muss es jedoch ersetzt werden und zum ursprünglichen Charakter werden.
öffentliche Klasse arrangieren {public static void main (String [] args) {char [] chs = {'a', 'b', 'c'}; arrangieren (CHS, 0, ch.länge); } public static void Array (char [] chs, int start, int len) {if (start == len-1) {for (int i = 0; i <chsgth; ++ i) system.out.print (chs [i]); System.out.println (); zurückkehren; } für (int i = start; i <len; i ++) {char temp = chs [start]; CHS [START] = CHS [i]; chs [i] = temp; Anordnung (CHS, Start+1, Len); temp = chs [start]; CHS [START] = CHS [i]; chs [i] = temp; }}}Die Betriebsergebnisse sind in der folgenden Abbildung mit insgesamt 6 Kombinationen dargestellt
3. Kombination: Alle Kombinationen von drei Zeichen ABC
Finden Sie alle Kombinationen, dh ob jedes Bit ABC ausgewählt ist, das erste Bit 2 und das zweite Bit 2. . Insgesamt gibt es 2^n -Typen. 0 bedeutet nicht zu nehmen, 1 bedeutet Auswahl, so dass AB durch 110 dargestellt werden kann. Die Gesamtdarstellung von ABC beträgt 0 bis 2^3-1. Wenn das Ergebnis 1 ist, wird das Strombit ausgegeben und das Ergebnis 0 wird nicht ausgegeben.
public class comM {public static void main (String [] args) {char [] chs = {'a', 'b', 'c'}; Kamm (CHS); } public static void comb (char [] chs) {int len = chs.length; int nbits = 1 << len; für (int i = 0; i <nbits; ++ i) {int t; für (int j = 0; j <len; j ++) {t = 1 << j; if ((t & i)! }} System.out.println (); }}}Das Ausgangsergebnis ist wie folgt. Das erste Verhalten ist leer, was bedeutet, dass niemand genommen wird.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.