Ein Junior stellte mir zuvor eine Java -Interview -Frage, aber die Fragen waren nicht schwierig. Implementieren Sie das Yang Hui -Dreieck mit Java. Ich nahm mir einige Zeit, um es zu klären und stellte fest, dass es ziemlich interessant war, also wollte ich es aufschreiben und teilen. Bevor Sie Code schreiben, klären wir zunächst die folgenden zwei Fragen.
Was ist Yang Hui -Dreieck?
Yang Huis Dreieck ist eine geometrische Anordnung von Binomialkoeffizienten in einem Dreieck. Es wurde in der "detaillierten Erklärung des neun Kapitelalgorithmus" von Yang Hui, einem Mathematiker der südlichen Song -Dynastie in meinem Land in meinem Land im Jahr 1261 erwähnt. In Europa wird es als Pascal -Dreieck bezeichnet, wie in der Abbildung gezeigt.
Yang Hui Dreieck
Das Gesetz von Yang Huis Dreieck ist das Prinzip
1. Jede Zahl entspricht der Summe der beiden oben genannten Zahlen.
2. Jede Zahlenreihe ist symmetrisch links und rechts und wird allmählich von 1 größer.
3. Die Zahl in Zeile N hat n Begriffe.
V.
5. Die Anzahl der m in der n-ten Reihe kann als C (N-1, M-1) ausgedrückt werden, dh die Anzahl der Kombinationen von M-1-Elementen aus N-1 verschiedenen Elementen.
6. Die MTH-Zahl in Zeile N entspricht der N-M+1-Zahl, eine der Eigenschaften der kombinierten Zahl.
7. Jede Zahl ist gleich der Summe der linken und rechten Zahlen der vorherigen Zeile. Diese Eigenschaft kann verwendet werden, um das gesamte Yang Hui -Dreieck zu schreiben. Das heißt, die I-D-Nummer in Zeile N+1 entspricht der Summe der I-1th-Nummer und der I-Th-Nummer in Zeile N, die auch eine der Eigenschaften der kombinierten Zahl ist. Das heißt, c (n+1, i) = c (n, i)+c (n, i-1).
8. Die Koeffizienten in der Expansionsformel von (a+b) n entsprechen jedem Element in der (N+1) -Linie des Yang Hui -Dreiecks nacheinander.
9. Verbinden Sie die erste Zahl in Zeile 2N+1 mit der dritten Zahl in Zeile 2N+2, der fünften Zahl in Zeile 2N+3, und die Summe dieser Zahlen ist die 4N+1 -Fibonacci -Zahl; Übertragen Sie die zweite Zahl in Zeile 2N-1 (n> 1), wobei die vierte Zahl in Zeile 2N-2 und die sechste Zahl in Zeile 2N-2 ... die Summe dieser Zahlen ist die 4N-2-Fibonacci-Nummer.
10. Ordnen Sie die Zahlen in jeder Reihe an und Sie können den N-1 von 11 (n die Anzahl der Zeilen) erhalten: 1 = 11^0; 11 = 11^1; 121 = 11^2 ... Wenn n> 5 diese Eigenschaft nicht erfüllt. Zu diesem Zeitpunkt sollte die rechtliche Zahl "1" in der n-ten Zeile in die einzelne Ziffer platziert werden und dann die einzelne Ziffer einer Zahl links auf zehn Ziffern ausrichten ...... füllen Sie den leeren Raum mit "0" aus und fügen Sie dann alle Zahlen zusammen, und die erhaltene Nummer ist genau der N-1-Leistung von 11. N. N = 11 NEI. 1,10,45,120,210,252,210,120,45,10,1, und das Ergebnis beträgt 25937424601 = 1110.
Nachdem wir diese beiden Punkte verstanden haben, wird unser Denken sehr klar. Es gibt viele Möglichkeiten, es zu implementieren. Hier habe ich vor, ein zweidimensionales Array sowie ein Doppel für die Schleife zu verwenden, um es zu implementieren.
Democode:
public class yanghui {public static void main (String [] args) {// Erstellen Sie ein zweidimensionales Array int [] [] = new int [10] []; // Die erste Schicht des zweidimensionalen Arrays für (int i = 0; i <t.Length; i ++) {// die Größe des zweiten Schicht-Array t [i] = new int [i+1] initialisieren; // Das Array der zweiten Schicht für (int j = 0; j <= i; j ++) {// die Array -Elemente auf beiden Seiten zu 1 if (i == 0 || j == 0 || j == i) {t [i] [j] = 1 zuweisen; } else {// Andere Werte werden durch Formel t [i] [j] = t [i-1] [j]+t [i-1] [j-1] berechnet; } // Ausgabe Array Element System.out.print (t [i] [j]+"/t"); } // Line Break System.out.println (); }}}Die Ausgabeergebnisse in der Konsole sind wie folgt:
Hier werden nur zehn Reihen von Yang Hui -Dreieck ausgegeben. Optimieren Sie es und können in dynamischem Erhalt der Anzahl der Zeilen geändert werden. Es kann auch in ein positives Dreieck verwandelt werden. Fügen Sie einfach eine Schleife hinzu, um den Raum zu berechnen. Interessierte Schüler können es versuchen. -vom 18. Java-Programmierer von Java
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.