问题描述
杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。 它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。 下面给出了杨辉三角形的前4行: 1 1 1 1 2 1 1 3 3 1 给出n,输出它的前n行。
输入格式
输入包含一个数n。
输出格式
输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。
样例输入
4
样例输出
1 1 1 1 2 1 1 3 3 1
数据规模与约定
1 <= n <= 34。
n=int(input())
num=[[0]*n for i in range(n)]#初始一个n*n的矩阵
for i in range(n):
for j in range(n):
if j==0:
num[i][j]=1
else:
num[i][j]=num[i-1][j-1]+num[i-1][j]
if num[i][j]!=0:
print(num[i][j],end=' ')
print() #一行一行输出 没有的话就会所有值在一行输出
杨辉三角形主要靠图来理解 纯看代码确实抽象
我们可以看到三角形的俩边都是1 每一行的第一个数即j=0的时候为1 后面的数即为上一行斜上方左右之和
例如第四行第二个数3 num[3][1]=num[2][0]+num[2][1] 即num[2][1]=第三行第一个数 1 + 第三行第二个数 2 = 3
而最后一个数 num[3][3]=num[2][2]+num[2][3] 即num = 1 + 不存在即为0 = 1
最后输出时用一个 end=' ' 加空格输出