帕斯卡三角形,用 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.