如何使用队列数据结构有效地生成并输出给定正整数 N 的杨辉三角形?cpp
时间: 2024-10-29 19:20:22 浏览: 12
在C++中,可以使用队列数据结构结合嵌套循环来高效地生成和输出杨辉三角。杨辉三角是一种经典的数学图形,每个数字是它上面两个数字之和。这里我们采用广度优先遍历(类似于打印矩阵)的方法。
首先,我们需要创建一个二维数组或动态数组来存储杨辉三角,然后使用队列来保存当前行的元素,每次将左上角元素入队,并将其相邻的元素添加到队列里。以下是代码示例:
```cpp
#include <iostream>
#include <queue>
using namespace std;
void printPascalTriangle(int n) {
vector<vector<int>> triangle(n, vector<int>(n, 0));
for (int i = 0; i < n; ++i) {
triangle[i][0] = triangle[i][i] = 1;
queue<pair<int, int>> q;
q.push({i, 0});
while (!q.empty()) {
int row = q.front().first;
int col = q.front().second;
cout << triangle[row][col] << " ";
// 将当前元素的左右邻居入队
if (col > 0) q.push({row, col - 1});
if (row > 0 && col < n - 1) q.push({row - 1, col + 1});
q.pop();
}
cout << endl;
}
}
int main() {
int N = 5;
printPascalTriangle(N);
return 0;
}
```
运行这段代码,输入 `N` 后,程序将生成并输出大小为 `N` 的杨辉三角形。
阅读全文