编写一个程序,根据用户输入的行数N,用队列数据结构实现并按照指定格式(每两个元素间空3个格子,最后一行第一个'1'前空2格)打印出对应的杨辉三角。例如,当输入5时,应输出如下格式的杨辉三角: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
时间: 2024-11-24 18:41:54 浏览: 4
要编写一个程序来根据用户输入的行数N打印杨辉三角,你可以使用Python的列表推导式和队列数据结构。首先,我们创建一个队列来存储每一行的数字。然后,我们可以循环N次,每次从队列中取出前两元素,并添加适当的间隔和新的元素(即当前行数的组合),最后将新行添加回队列。
```python
from collections import deque
def print_pascal_triangle(n):
triangle = deque([[1]])
for _ in range(1, n):
# 新的一行需要两倍的宽度加一个'1'
new_row_width = 2 * (_ + 1)
# 创建新行
new_row = [1] * (new_row_width - 1)
# 从上一行取元素并计算当前行的值
for i in range(new_row_width // 2):
if i != 0 and i < len(triangle[-1]):
new_row[i] = triangle[-1][i - 1] + triangle[-1][i]
# 添加间隔并追加到新行
new_row.insert(0, ' ')
new_row.append(' ')
new_row.append(1)
# 将新行添加到队列
triangle.append(new_row)
# 打印队列中的杨辉三角
for row in triangle:
print(' '.join(str(num) for num in row))
# 获取用户输入
n = int(input("请输入行数N: "))
print_pascal_triangle(n)
```
运行上述程序,它会根据用户输入的行数N打印出杨辉三角。例如,对于输入5,输出将是:
```
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
```
阅读全文