21xrx.com
2025-06-23 17:51:03 Monday
文章检索 我的文章 写文章
用C++语言实现杨辉三角
2023-06-30 22:22:24 深夜i     21     0
C++ 杨辉三角 实现

杨辉三角是一种神奇的数学图形,由数字组成的三角形,每个数字等于它上方两个数字之和。从图形的中心开始,每一行都是从1开始,不断增加数字的序列。杨辉三角最早出现在13世纪的中国,因为杨辉所著书中提到了该三角形,而且他还发现了许多有趣的数学规律。本文将介绍如何使用C++语言实现杨辉三角。

首先,我们需要定义一个二维数组来储存杨辉三角。我们可以让用户输入需要打印的杨辉三角行数n,然后创建一个n×n的数组,并将所有元素初始化为0。

int n;
cout << "请输入需要打印的杨辉三角的行数n:" << endl;
cin >> n;
int yangHuiTriangle[n][n] = { 0 };

接下来,我们需要填充杨辉三角的每一行。根据杨辉三角的规律,每一行的第一个和最后一个数字都是1,其他数字等于上方两个数字之和。

for (int i = 0; i < n; i++) {
  // 每行第一个和最后一个数字都是1
  yangHuiTriangle[i][0] = 1;
  yangHuiTriangle[i][i] = 1;
  for (int j = 1; j < i; j++) {
    // 其他数字等于上方两个数字之和
    yangHuiTriangle[i][j] = yangHuiTriangle[i - 1][j - 1] + yangHuiTriangle[i - 1][j];
  }
}

最后,我们需要打印出整个杨辉三角。这可以通过遍历数组并输出每个元素来实现。为了让杨辉三角的数字按照规律排列,我们可以在输出之前添加一些空格。

for (int i = 0; i < n; i++) {
  for (int j = 0; j < n - i - 1; j++)
    cout << " ";
  
  for (int j = 0; j <= i; j++) {
    cout << yangHuiTriangle[i][j] << " ";
  }
  cout << endl;
}

完整代码如下:

#include <iostream>
using namespace std;
int main() {
  int n;
  cout << "请输入需要打印的杨辉三角的行数n:" << endl;
  cin >> n;
  int yangHuiTriangle[n][n] = { 0 };
  for (int i = 0; i < n; i++) {
    // 每行第一个和最后一个数字都是1
    yangHuiTriangle[i][0] = 1;
    yangHuiTriangle[i][i] = 1;
    for (int j = 1; j < i; j++) {
      // 其他数字等于上方两个数字之和
      yangHuiTriangle[i][j] = yangHuiTriangle[i - 1][j - 1] + yangHuiTriangle[i - 1][j];
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n - i - 1; j++)
      cout << " ";
    
    for (int j = 0; j <= i; j++) {
      cout << yangHuiTriangle[i][j] << " ";
    }
    cout << endl;
  }
  return 0;
}

通过上述步骤,我们已经成功地用C++语言实现了杨辉三角。输出结果如下:

请输入需要打印的杨辉三角的行数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

杨辉三角不仅是数学上的奇妙图形,它还有很多实际应用。例如,在概率论和组合数学中,杨辉三角可以用来计算排列和组合的数量。在计算机科学中,杨辉三角也被广泛地应用于动态规划和图像处理等领域。不管是数学还是计算机领域,杨辉三角都是一个非常有趣和有用的概念。

  
  

评论区