21xrx.com
2024-11-05 14:53:24 Tuesday
登录
文章检索 我的文章 写文章
用C++语言实现杨辉三角
2023-06-30 22:22:24 深夜i     --     --
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

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

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复