Python 楊輝三角那點小事

2021-10-24 09:49:40 字數 2145 閱讀 1036

性質: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...