打印杨辉三角形 (Python实现)

资源限制

时间限制:1.0s 内存限制:256.0MB

问题描述

杨辉三角形又称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。


首先需要理解杨辉三角形的规律,建立二维表格,从第三行起第j (j>1)个数字等于上一行的j-1和j的和。就可以得出s[i][j]=s[i-1][j-1]+s[i-1][j],理解这个之后,这个问题就变得简单,剩下的就是将代码补全。详细看下面的代码

法一:

n=int(input())  #输入一个n行的数
s=[]  #存储杨辉三角形
for i in range(n):
   s.append(list(range(i+1)))  #定义每行的数量
   s[i][0]=1
   s[i][i]=1     #每行的第一个数和最后一个数都为1
   for  j in range(1,i):
       s[i][j]=s[i-1][j-1]+s[i-1][j]
   else: 
        continue
for x in range(len(s)):   #遍历s有几行
    while s[x]:
         print(s[x].pop(0),end=' ')  #不断输出第一位,知道将这一行所有数字输出
    else:
        print(' ')    #换行

法二:

n=int(input())
x=[]       # 存放最终结果
for i in range(n):
    y=[]     # 存放一行,每次清空
    for j in range(i+1):
        if j ==0 or j == i:    #每行第一位和最后一位是1
            y.append(1)
        else:
            y.append(x[i-1][j-1]+x[i-1][j])
    x.append(y)
for c in range(len(x)):  #输出x列表
    while x[c]:
        print(x[c].pop(0),end=' ')
    else:
        print(' ')

你可能感兴趣的:(python,蓝桥杯)