性質:1、第n行有n項,n是正數;
2、第n行數字和為2的n-1次方;
3、除第乙個外,每乙個元素的值等於左上角和右上角的和;
列印楊輝三角:
方法一:
num =
10000
#num 第幾層
******** =
for index in rang(
0, num)
: cur =[1
]if index ==0:
continue
pre = ********[index-1]
for jindex in
range
(index-1)
:+ pre[jindex+1]
)1)print
(********)
方法二:
num =
10000
******** =[[
1],[
1,1]
]# 第一和第二行內容
for index in
range(2
, num)
:# 從索引2開始
row =[1
]*(index +1)
# 初始化索引為第index行大小
for jindex in
range(1
, indx//2+
1):# 只需要遍歷到一半,另一半一樣。畫畫圖,就知道範圍
val = ********[index-1]
[jindex-1]
+ ********[index-1]
[jindex]
# 計算第jindex的值
row[jindex]
= val # 賦值第jindex個的值
row[
-jindex-1]
= val # 賦值第jindex個對應的值
# 新增第index+1的元素
print
(********)
方法三:
num =
10000
row =[1
]* num
for index in
range
(num)
: old =
1for jindex in
range
( index//2)
: val = old + row[jindex +1]
old = row[jindex +1]
row[jindex +1]
= val
row[jindex -
(jindex+1)
]= val
print
(row[
:index+1]
)
比較:
方法一,中規中矩的一般演算法,時間和空間複雜度相對其他兩個方法比較高。
方法二,時間複雜度相對一小了很多,只遍歷一半,另一半同樣的值不用遍歷,但是空間複雜度還是很高。
方法三,時間和空間複雜度都相對比較小。
輸出第n行第k個數,k<=n
可以從上面的幾種方法中遍歷完所有的行,然後輸出;
也可以從性質求出結果。
性質:第n行的k個元素表示為c(n-1, k-1),即組合公式。
n =
1000
k =10
m = n-
1r = k -
1d = m - k
targets =
factorial =
1for index in
range(1
, m+1)
: factorial *= index
if index == r :
if index == d :
if index == m :
print
(targets[2]
//(targets[0]
*targets[1]
))
python楊輝三角 楊輝三角I II
給定乙個非負整數 numrows,生成楊輝三角的前 numrows 行。在楊輝三角中,每個數是它左上方和右上方的數的和。示例 輸入 5 輸出 1 1,1 1,2,1 1,3,3,1 1,4,6,4,1 可以一行一行錯位加,當然這裡提供更簡便的方法。任取一行描述 1,2,1 如何得到 1,3,3,1 ...
Python 楊輝三角
首先附上我們需要求得的楊輝三角 1 1,1 1,2,1 1,3,3,1 1,4,6,4,1 1,5,10,10,5,1 1,6,15,20,15,6,1 1,7,21,35,35,21,7,1 1,8,28,56,70,56,28,8,1 1,9,36,84,126,126,84,36,9,1 很顯...
楊輝三角 Python
給定乙個非負整數 numrows,生成楊輝三角的前 numrows 行。在楊輝三角中,每個數是它左上方和右上方的數的和。示例 輸入 5 輸出 1 1,1 1,2,1 1,3,3,1 1,4,6,4,1 coding utf 8 usr bin env python author wowlnan gi...