橙白時光OJ 1905 楊輝三角
阿新 • • 發佈:2018-12-12
橙白時光OJ 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。
可以通過類似矩陣生成式的方法生成一個元素全為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()
- 第二種方法,利用二項式定理中的二項式係數,即組合數。
利用階乘來定義一個組合數的函式。
楊輝三角的行數為組合數下面的數,列數即上面的數。
程式碼:
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')