用C++实现对于给定的正整数N利用一个队列输出N阶杨辉三角形
时间: 2024-10-29 10:19:40 浏览: 41
在C++中,我们可以使用队列和循环结构来实现输出N阶的杨辉三角形。杨辉三角是一个二项式系数表,每个数字表示从左上角到该位置的所有路径数。下面是简单的步骤:
```cpp
#include <iostream>
#include <queue>
// Function to print the Nth level of Pascal's triangle using a queue
void printPascalTriangle(int N) {
std::queue<std::pair<int, int>> q; // 使用一对元组存储行和值
for (int i = 0; i <= N; ++i) {
q.push({i, 1}); // 初始行只包含一个元素,值为1
while (!q.empty()) {
int row = q.front().first;
int val = q.front().second;
if (row > 0) {
std::cout << val << ' '; // 输出当前行的元素
q.pop(); // 出队前一行的数据
}
if (row < N && row + 1 <= N) { // 如果还有剩余行并且下一行存在
q.push({row + 1, val + q.empty() ? 0 : q.front().second}); // 新行的第一个元素是当前元素加下一行的第二个元素
q.push({row + 1, val}); // 下一行的其他元素是当前元素
}
}
std::cout << '\n'; // 每行结束后换行
}
}
int main() {
int N;
std::cout << "Enter the value of N: ";
std::cin >> N;
printPascalTriangle(N);
return 0;
}
```
在这个程序中,我们首先创建一个队列存储行和值。然后,对于每一行,我们先打印出第一个元素,再根据杨辉三角的递推公式添加下一个元素到队列中,直到达到指定的层数。
阅读全文