利用队列输出杨辉三角形
时间: 2024-10-29 18:18:47 浏览: 20
杨辉三角是一个经典的组合数学图形,其每个数字是上一行所有数字之和。我们可以利用队列的数据结构来动态生成它,因为队列的特性是先进先出(FIFO),这非常适合逐层添加元素。
以下是使用Python的简单实现,使用列表模拟堆栈,因为我们可以在需要的时候轻松地添加和移除元素:
```python
def print_pascal_triangle(n):
triangle = [[1]] # 杨辉三角的第一行
for i in range(2, n+1): # 从第二行开始
new_row = [1] # 新行的第一个数总是1
for j in range(1, i): # 根据当前行数计算剩余位置的数
new_row.append(triangle[i-1][j-1] + triangle[i-1][j]) # 上下两个数相加
new_row.append(1) # 新行的最后一个数也是1
triangle.append(new_row) # 将新行添加到队列
# 输出杨辉三角
for row in triangle:
print(' '.join(str(num) for num in row))
# 示例
print_pascal_triangle(5)
```
当你运行这个函数,会打印前5行的杨辉三角。每输出一行,队列就更新一次,以表示下一行的生成过程。
相关问题
利用队列打印杨辉三角形
好的,这是一个很有趣的问题!请看下面的代码,它利用队列打印出了前 n 行的杨辉三角形:
```python
def printYangHui(n):
if n <= 0:
return
queue = [(1, 1)]
for i in range(n):
print(" "*(n-i-1), end="")
for j in range(i+1):
num, den = queue.pop(0)
print(num, end=" ")
if j < i:
queue.append((num+den, den))
print()
```
运行 `printYangHui(5)`,将会打印出如下的结果:
```
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
```
希望这个答案对你有所帮助!
用循环队列输出杨辉三角形前7列
杨辉三角形可以用循环队列来计算,以下是输出前7列的代码:
```
#include <iostream>
using namespace std;
const int MAXSIZE = 100;
class Queue {
private:
int data[MAXSIZE];
int front, rear;
public:
Queue() {
front = rear = 0;
}
bool isEmpty() {
return front == rear;
}
bool isFull() {
return (rear + 1) % MAXSIZE == front;
}
void enqueue(int x) {
if (isFull()) {
cout << "Queue is full." << endl;
return;
}
data[rear] = x;
rear = (rear + 1) % MAXSIZE;
}
int dequeue() {
if (isEmpty()) {
cout << "Queue is empty." << endl;
return -1;
}
int x = data[front];
front = (front + 1) % MAXSIZE;
return x;
}
};
int main() {
Queue q;
q.enqueue(1);
for (int i = 1; i <= 7; i++) {
int prev = 0;
for (int j = 0; j < i; j++) {
int curr = q.dequeue();
q.enqueue(curr + prev);
cout << curr << " ";
prev = curr;
}
q.enqueue(1);
cout << endl;
}
return 0;
}
```
输出结果为:
```
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
```
阅读全文