21xrx.com
2025-03-21 16:42:54 Friday
文章检索 我的文章 写文章
C++实现数字金字塔的输出
2023-07-11 15:51:52 深夜i     242     0
C++ 数字 金字塔 实现 输出

在计算机编程语言中,数字金字塔是一种很受欢迎的算法,因为它可以通过一系列数字来形成一个金字塔形状,使得每一层的数字都与其下一层有着清晰的关系。而C++是一种非常流行的编程语言,可以很方便地实现数字金字塔的输出。

首先,我们需要定义一个结构,来存储数字金字塔中每一行的数字。这个结构的定义如下:

struct PyramidRow {
  int numbers[100];
  int length;
};

其中,`numbers`数组用于存储该行数字的数据,`length`表示该行数字的个数。

然后,我们可以使用递归算法来生成数字金字塔。具体思路如下:

- 首先,我们需要输入数字金字塔的层数,并创建一个`PyramidRow`类型的数组`pyramid`来存储每一层数据。

- 接着,我们需要使用递归算法生成数字金字塔的每一行数据,从最底层开始。

- 对于每一行数据,我们可以从下一层的相邻两个数字中,选择其中较大的一个加上当前层的数字,然后将结果存储到该行对应的`numbers`数组中。

- 最后,我们可以使用循环遍历输出整个数字金字塔。

具体实现代码如下:

#include <iostream>
using namespace std;
struct PyramidRow {
  int numbers[100];
  int length;
};
void generatePyramidRow(PyramidRow& row, PyramidRow& nextRow) {
  for(int i = 0; i < row.length; i++) {
    int leftChild = nextRow.numbers[i];
    int rightChild = nextRow.numbers[i+1];
    row.numbers[i] += (leftChild > rightChild ? leftChild : rightChild);
  }
}
int main() {
  int n;
  cin >> n;
  PyramidRow pyramid[100];
  // generate pyramid
  for(int i = n-1; i >= 0; i--) {
    pyramid[i].length = n - i;
    for(int j = 0; j < pyramid[i].length; j++) {
      cin >> pyramid[i].numbers[j];
    }
    if(i == n-1) continue;
    generatePyramidRow(pyramid[i], pyramid[i+1]);
  }
  // output pyramid
  for(int i = 0; i < n; i++) {
    for(int j = 0; j < pyramid[i].length; j++) {
      cout << pyramid[i].numbers[j] << " ";
    }
    cout << endl;
  }
}

这段代码中,`generatePyramidRow`函数用于生成数字金字塔的每一行数据,而`main`函数用于读入数字金字塔的层数以及数字,然后遍历输出整个数字金字塔。通过以上操作,我们就可以在C++中实现数字金字塔的输出,展现出这种经典算法的魅力。

  
  

评论区