c++用循环队列输出杨辉三角前n行
时间: 2024-12-06 09:22:08 浏览: 23
在C++中,我们可以使用循环队列(circular queue)来存储并输出杨辉三角(Pascal's Triangle)的前n行。杨辉三角是一个二维数组,每行的每个元素等于上一行相邻两个元素之和。以下是用循环队列实现这个功能的一个简单示例:
```cpp
#include <iostream>
#include <queue>
// 使用pair存储索引和值,因为循环队列需要支持自增操作
using Pair = std::pair<int, int>;
std::queue<Pair> circ_queue;
void printPascalTriangle(int n) {
for (int i = 0; i <= n; ++i) {
// 对于每一行,先打印空格
for (int j = 1; j < i; ++j)
std::cout << " ";
// 初始化第一个元素
circ_queue.push({i, 1});
// 输出当前行
for (int j = 0; j <= i; ++j) {
if (j > 0)
circ_queue.push({i, circ_queue.front().second + circ_queue.deque().second}); // 取出前两个元素相加
// 输出当前元素
std::cout << circ_queue.front().second << " ";
// 移除已经使用的元素
circ_queue.pop();
}
std::cout << std::endl;
}
}
int main() {
int rows = 5; // 输出前5行
printPascalTriangle(rows);
return 0;
}
```
在这个代码中,我们首先创建了一个循环队列`circ_queue`,然后在`printPascalTriangle`函数中遍历每一行,依次计算和添加杨辉三角的元素。每次更新队列中的元素后,我们就从队列头部输出一个元素。
阅读全文