利用c++通过队列打印杨辉三角形
时间: 2024-10-14 20:10:02 浏览: 44
数据结构打印杨辉三角形C++
在C++中,可以利用队列数据结构和嵌套循环来实现打印杨辉三角形。杨辉三角是一个数学术语,每一行都是前一行数字之和,从一个正方形开始,逐层向下扩展。以下是简单的步骤:
1. 定义一个队列,用于存储当前行的数字。
2. 创建一个二维数组或动态分配内存来保存杨辉三角的具体数值。
3. 使用两个嵌套循环:外层循环控制行数,内层循环控制每行的元素位置。外层循环从1开始,因为第一行只有一个数字,之后每次增加1;内层循环从0开始到当前行数减1,表示左上角到右下角的位置。
4. 初始化队列,将第一行的数字放入队列。
5. 当有新行需要计算时,先取出队首元素,然后计算其相邻两元素之和,将结果添加到队列中,并更新二维数组。
6. 循环结束后,队列中剩余的就是最后一行的数字,依次输出即可。
这是一个基础版的示例代码片段(使用二维数组):
```cpp
#include <iostream>
#include <queue>
void printPascalTriangle(int n) {
int** triangle = new int*[n];
for (int i = 0; i < n; ++i) {
triangle[i] = new int[i + 1];
triangle[i][0] = triangle[i][i] = 1;
}
std::queue<std::pair<int, int>> queue;
queue.push(std::make_pair(0, 0));
while (!queue.empty()) {
int row = queue.front().first;
int col = queue.front().second;
if (row > 0 && col > 0)
std::cout << triangle[row - 1][col - 1] << " ";
if (col < n - 1)
std::cout << triangle[row][col + 1] << " ";
std::cout << triangle[row][col] << "\n";
if (row < n - 1) {
queue.push(std::make_pair(row + 1, col));
queue.push(std::make_pair(row + 1, col + 1));
}
else
queue.pop();
}
for (int i = 0; i < n; ++i) {
delete[] triangle[i];
}
delete[] triangle;
}
int main() {
int rows = 5;
printPascalTriangle(rows);
return 0;
}
```
阅读全文