帕斯卡三角形,用 C++ 列印


帕斯卡三角形是由二項式係數組成的陣列。第一行標為 n = 0,每一行從左側開始標號,從 k = 0 開始。每個數字的求法是將前一行中恰好位於當前單元格正上方的兩個數字相加。也可以透過計算行號為 n 和列號為 k 的 (𝑛𝑘) 來生成三角形。

假設輸入是 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

為此,我們將遵循以下步驟。

  • 對於 i := 0 至 n
    • 對於 j = 0 至 n – i – 2,列印黑色空格
    • 對於 j := 0 至 i,執行 nCr(i, j)

讓我們看以下實現以獲得更好的理解 −

示例(C++)

 即時演示

#include<iostream>
#include<iomanip>
using namespace std;
long fact(long n){
   int i, fact = 1;
   for(i = n; i>1; i--)
      fact *= i;
   return fact;//factorial of given number
}
long nCr(long n, long r){
   long nume = 1, i;
   for(i = n; i>r; i--)
      nume *= i;
   return long(nume/fact(n-r));//generate result of nCr
}
void genPascalsTriangle(long n){
   for(int i = 0; i<n; i++){
      for(int j = 0; j<(n-i-1); j++)
         cout <<setw(3)<< " ";//printing space to show triangular form
      for(int j = 0; j<(i+1); j++)
         cout <<setw(3)<< nCr(i, j) <<setw(3)<< " ";
      cout << endl;
   }
}
main(){
   int n;
   cout << "Enter Number of lines: "; cin >> n;
   genPascalsTriangle(n);
}

輸入

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

更新於: 2020 年 1 月 8 日

6K+ 瀏覽量

開始你的 職業生涯

完成課程取得認證

開始
廣告
© . All rights reserved.