首页 > 试题广场 >

杨辉三角

[编程题]杨辉三角
  • 热度指数:137 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}杨辉三角形,又称帕斯卡三角形,第 i+1 行是二项式展开 (a+b)^i 的系数。
\hspace{15pt}三角形中任意元素等于上一行同列元素与上一行前一列元素之和。
\hspace{15pt}下面给出杨辉三角形的前 4 行:

\begin{matrix}<br />1\\<br />1 & 1\\<br />1 & 2 & 1\\<br />1 & 3 & 3 & 1<br />\end{matrix}

\hspace{15pt}给定正整数 n,请输出杨辉三角形的前 n 行。

输入描述:
\hspace{15pt}在一行输入一个整数 n \left(1 \leqq n \leqq 34\right)


输出描述:
\hspace{15pt}输出杨辉三角形的前 n 行。每一行从该行第一个元素开始,依次输出;每两个数之间用一个空格分隔。请不要在行末输出多余的空格。
示例1

输入

4

输出

1
1 1
1 2 1
1 3 3 1

说明

n=4 时,杨辉三角形的前 4 行如上所示。
示例2

输入

1

输出

1

说明

n=1 时,杨辉三角形只有第 1 行,元素为 1
n = int(input())

last_line = []
for i in range(n):
    if i == 0:
        print(1)
    elif i == 1:
        print(1, 1)
        last_line=[1, 1]
    else:
        line = []
        for j in range(i+1):
            if j == 0:
                line.append(1)
            elif j == len(last_line):
                line.append(1)
            else:
                line.append(last_line[j-1] + last_line[j])
        last_line = line
        print(' '.join([str(v) for v in line]))

发表于 2025-05-29 14:06:17 回复(0)