1905 楊輝三角

1905 楊輝三角

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
Input
輸入數據包含多個測試實例,每個測試實例的輸入只包含一個正整數n(1<=n<=30),表示將要輸出的楊輝三角的層數。
Output
對應於每一個輸入,請輸出相應層數的楊輝三角,每一層的整數之間用一個空格隔開,每一個楊輝三角後面加一個空行。
Sample Input
2
3
Sample Output
1
1 1

1
1 1
1 2 1

  1. 通過觀察可以開出規律,即處於楊輝三角內部的數等於其上一行與其對應的兩個數的和,而三角形的兩條邊上全部是1。
    可以通過類似矩陣生成式的方法生成一個元素全爲0的三角,再向其中填入數字,如:
    0
    0 0
    0 0 0
    代碼:
while 1:
    n=int(input())
    l=[]
    for i in range(1,n+1):
        l.append([0 for j in range(i)])
    l[0][0]=1
    for i in range(1,n):
       l[i][0]=1
       l[i][-1]=1
    for i in range(2,n):
        for j in range(1,i):
            l[i][j]=l[i-1][j-1]+l[i-1][j]
    for i in l:
        for j in i:
            print(j,end=' ')
        print()
    print()
  1. 第二種方法,利用二項式定理中的二項式係數,即組合數。
    利用階乘來定義一個組合數的函數。
    楊輝三角的行數爲組合數下面的數,列數即上面的數。
    代碼:
def C(n,m):
    x=1
    y=1
    if m==0 or n==0:
        return (1)
    else:
        for i in range(n-m+1,n+1):
            x=x*i
        for j in range(1,m+1):
            y=y*j
        return int((x/y))
while 1:
    l=int(input())
    for a in range(l):
        for b in range(a+1):
            print(C(a,b),end=' ')
        print(end='\n')
    print(end='\n')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章