Java erkennt das Dreieck von Yang Hui

Java erkennt das Dreieck von Yang Hui

1. Prinzip

Das Pascalsche Dreieck, auch Pascalsches Dreieck genannt, ist ein Zahlendreieck, das dadurch gekennzeichnet ist, dass jede Zahl die Summe der beiden darüber liegenden Zahlen ist. Das Dreieck ist nach dem französischen Mathematiker Blaise Pascal und dem chinesischen Mathematiker Yang Hui benannt.

Das Prinzip des Dreiecks von Yang Hui kann durch die folgenden Schritte erklärt werden:

  1. Die erste Zeile hat nur eine Nummer 1.
  2. Die zweite Zeile enthält zwei Zahlen: 1.
  3. Ab der dritten Reihe sind die erste und die letzte Zahl jeder Reihe 1. Die Zahl in der Mitte ist die Summe der beiden benachbarten Zahlen in der vorherigen Zeile. Beispielsweise erhält man die mittlere Zahl in der dritten Reihe durch Addition der ersten Zahl 1 und der zweiten Zahl 1 in der vorherigen Reihe, und das Ergebnis ist 2.
  4. Die Anzahl der Zahlen in jeder Zeile ist um 1 höher als in der vorherigen Zeile.

Durch eine solche Regel kann das Yanghui-Dreieck Reihe für Reihe konstruiert werden. Die Zahlen in jeder Zeile können durch Kombinationszahlen dargestellt werden. Beispielsweise kann die Zahl nin der Zeile als ausgedrückt werden , wobei die Anzahl der Zeilen und die Position der Zahl in der Zeile angegeben werden.kC(n-1, k-1)nk

Das Dreieck von Yang Hui wird häufig in der Kombinatorik, Wahrscheinlichkeitstheorie, Algebra und anderen Bereichen verwendet, und seine Eigenschaften und Gesetze werden ausführlich untersucht und zur Lösung verschiedener mathematischer Probleme verwendet.

2. Code-Implementierung

//n 是杨辉三角形的行数
public void yanghui(int n) {
    
    
    //创建列不固定的二维数组
    int[][] arr = new int[n][];
    for (int i = 0; i < n; i++) {
    
    
        //每一行的数字个数
        arr[i] = new int[i + 1];

        for (int j = 0; j < i + 1; j++) {
    
    
            //第一个和最后一个数字为 1
            //其他数字为上一行相邻的两个数字之和
            if (j == 0 || j == i) {
    
    
                arr[i][j] = 1;
            } else {
    
    
                arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
            }
        }
    }

    //打印杨辉三角形
    System.out.println("杨辉三角形前 " + n + " 行数据如下:");
    for (int i = 0; i < n; i++) {
    
    
        for (int j = 0; j < i + 1; j++) {
    
    
            System.out.printf(arr[i][j] + "\t");
        }
        System.out.println();
    }
}
  • Zeitliche Komplexität: Die Schleife zum Füllen des Arrays muss mehrmals ausgeführt werden n*(n+1)/2, und die Schleife zum Drucken des Arrays muss mehrmals ausgeführt werden n*(n+1)/2. Daher beträgt die Gesamtzeitkomplexität O(n^2).
  • Raumkomplexität: arrDie Raumkomplexität des zweidimensionalen Arrays beträgt O(n^2), das zum Speichern der Zahlen des Yang-Hui-Dreiecks verwendet wird.

3. Laufergebnisse

杨辉三角形前 10 行数据如下:
1
1       1
1       2       1
1       3       3       1
1       4       6       4       1
1       5       10      10      5       1
1       6       15      20      15      6       1
1       7       21      35      35      21      7       1
1       8       28      56      70      56      28      8       1
1       9       36      84      126     126     84      36      9       1

Ich denke du magst

Origin blog.csdn.net/qq_45256357/article/details/131960685
Empfohlen
Rangfolge