2014-02-22 81 views
-1

下面粘貼的是打印帕斯卡三角形的程序。計算任何給定位置值的方法是將數字加到前一行中位置的右側和左側。例如,要計算第三行中的中間數字,可以添加1和1.三角形的邊總是1,因爲您只將數字添加到左上角或右上角(其中沒有第二個數字)側)。帕斯卡三角形以1開頭和結尾

 int pascal[][]=new int[50][50]; int j; 
    for(int i=0;i<m;i++) 
    { 
     pascal[i][i]=1; 
     for(j=1;j<i;j++) 
     { 
      pascal[i][j]=pascal[i-1][j-1]+pascal[i-1][j]; 
     } 

     for(int n=1;n<=m-i;n++) 
     { 
      System.out.print(" "); 
     } 

     for(int k=1;k<=i;k++) 
     { 
      System.out.print(pascal[i][k]); 
      System.out.print(" "); 
     } 

     System.out.println(" "); 
    } 

有什麼辦法可以在不使用數組的情況下完成這個任務嗎?

我想這個組合沒有數組:

           1 
              1  1 
             1  2  1 
            1  3  3  1 
           1  4  6  4  1 
         1  5  10  10  5  1 
+0

有任何方式做同樣的不使用數組? – user3168844

+0

「我想要這樣的組合」,讓讀者相信你只需要那個特定的結果。你確定這就是你想要的嗎?實際上,您可以爲特定結果編碼,或者更一般地編碼。如果您要添加示例,請進行更改。 – batbrat

回答

2

可以使用Combination很容易地計算它。

Here's an image showing that approach visually

你可以計算組合爲:

|n| = (n!)/((n-k)!*k!) 
|k| 

所以,如果你要打印的圖像上面,你會作爲開始:

int size = 5; 
for(int i = 0; i < size; i++){ 

    for(int k = 0; k < (size - i)/2; k++) 
     System.out.print(" "); // print the intendation 

    for(int j = 0; j <= i; j++){ 

     System.out.print(combination(i,j)); 
    } 

    System.out.println(""); 
}