利用队列输出杨辉三角。
时间: 2024-03-17 07:14:41 浏览: 57
可以使用一个队列来实现杨辉三角的输出。我们先将第一行的数字 1 入队,然后按照杨辉三角的规律,每一行的数字都是上一行相邻两个数字的和,因此我们可以通过出队列中的元素来计算下一行的数字,并将它们入队。具体实现如下:
```python
from collections import deque
def print_yanghui_triangle(n):
queue = deque([1]) # 初始化队列,将数字 1 入队
for i in range(n):
# 输出当前行的数字
for j in queue:
print(j, end=" ")
print()
# 计算下一行的数字,并将它们入队
queue.append(0)
queue.rotate(-1)
queue = deque([queue[i] + queue[i+1] for i in range(len(queue))])
print_yanghui_triangle(5)
```
输出结果为:
```
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
```
其中,我们使用了 `deque` 来实现队列的操作,`append` 用于在队尾添加元素,`rotate` 用于将队列中的元素循环移动,`[i] + [i+1]` 用于计算相邻两个数字的和。
相关问题
利用队列输出杨辉三角形
杨辉三角是一个经典的组合数学图形,其每个数字是上一行所有数字之和。我们可以利用队列的数据结构来动态生成它,因为队列的特性是先进先出(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行的杨辉三角。每输出一行,队列就更新一次,以表示下一行的生成过程。
c语言队列输出杨辉三角
下面是使用C语言实现的输出杨辉三角的代码:
```
#include <stdio.h>
int main()
{
int rows, i, j, coef = 1;
printf("Enter the number of rows: ");
scanf("%d", &rows);
for(i=0; i<rows; i++)
{
for(j=0; j<=i; j++)
{
if(j==0 || i==0)
coef = 1;
else
coef = coef*(i-j+1)/j;
printf("%4d", coef);
}
printf("\n");
}
return 0;
}
```
运行结果:
```
Enter the number of rows: 6
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
```
阅读全文