21xrx.com
2024-12-22 17:37:30 Sunday
登录
文章检索 我的文章 写文章
C++实现数字金字塔的输出
2023-06-26 00:39:56 深夜i     --     --
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++中实现数字金字塔的输出,展现出这种经典算法的魅力。

  
  

评论区

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