python刷题-杨辉三角形

DaLongggggg 40 0 0

问题描述

杨辉三角形又称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() #一行一行输出 没有的话就会所有值在一行输出 

杨辉三角形主要靠图来理解 纯看代码确实抽象 20180906124240898

我们可以看到三角形的俩边都是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=' ' 加空格输出

预览图
收藏
评论区