杨辉三角打印:队列实现算法详解
杨辉三角是一种数学上的图形,可以通过组合数的方式生成。其本质是一个数字三角形,每一层由数字构成,数字的值是由上一层的相邻两个数字相加而得到的,最上面一层是1。杨辉三角的示例图如下:
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
1 7 21 35 35 21 7 1
利用队列实现杨辉三角的打印输出,可以采用以下的算法:
- 定义一个队列,将第一行的1入队。
- 从第二行开始,每一行的数字个数为该行的行数,从队列中取出前一行的数字,计算当前行的数字,并将其入队。
- 将当前行的数字打印输出,并在队列中保留当前行的数字。
- 重复步骤2和步骤3,直到输出完整的杨辉三角。
实现该算法的代码如下:
def print_yanghui_triangle(n):
queue = [1] # 第一行的1入队
for i in range(n):
# 当前行的数字个数为i+1
row = []
for j in range(i+1):
if j == 0 or j == i:
# 当前行的首尾数字都为1
row.append(1)
else:
# 计算当前数字,为上一行的相邻两个数字之和
row.append(queue[j-1] + queue[j])
# 将当前行的数字打印输出
print(' '.join(str(x) for x in row))
# 在队列中保留当前行的数字
queue = row
调用该函数即可输出指定行数的杨辉三角,例如:
>>> print_yanghui_triangle(5)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
原文地址: https://www.cveoy.top/t/topic/oAml 著作权归作者所有。请勿转载和采集!