python-1-楊輝三角算法總結


題目

計算楊輝三角前6行。

楊輝三角的三種方法

求楊輝三角的前6行。

1-1方法

先拼湊兩端的1,中間兩兩相加

triangle=[[1],[1,1]]
for i in range(2,6): # 外層循環,i表示索引
    cur=[1] # 拼頭部

    pre=triangle[i-1] # 上一行
    for  j in range(len(pre)-1): # 內層循環,兩兩相加
        cur.append(pre[j]+pre[j+1])

    cur.append(1) # 拼尾部

    triangle.append(cur)
print(triangle)
1-2方法

先拼湊兩端的1,中間兩兩相加
上一行的長度,等於下一行的索引

triangle = []
n = 6
for i in range(n): # 外層循環,i代表索引
    cur=[1] # 拼頭部
    
    if i==0: # 第一行特例處理
        triangle.append(cur)
        continue
    
    for j in range(i-1): # i=2才能進來,i-1表示上一行
        cur.append(triangle[i-1][j]+triangle[i-1][j+1])
    
    cur.append(1) # 拼尾部
    
    triangle.append(cur)

print(triangle)
2-1方法

新舊行交替方法,舊行尾部補0
利用索引游戲,兩兩相加,得到頭尾的1

n = 6
oldline = [] # 表示舊行
newline = [1] # 表示新行
length = 0
print(newline) # 打印第一行

for i in range(1,n): # 外層循環,i新行索引
    oldline = newline.copy() # 新行變舊行
    newline.clear() # 新行變成空
    oldline.append(0) # 舊行尾部加0
    
    # i是新行的索引
    # i-1就是舊行的索引
    # 舊行后面加了0,索引舊行最大索引應該是i
    # 為了讓新行第一個數字為1
    # 所以舊行應該是從-1+0開始,一直到i-1 + i
    # j的取值應該是從0到i,所以j從range(i+1)取值
    for j in range(i+1):  
        newline.append(oldline[j-1]+oldline[j]) 

    print(newline)
3-1方法

這里面用到兩個思想
第一個思想,先打出楊輝三角的形狀,格子先打出來,占位
第二個思想,對稱賦值,減少循環,提升效率

triangle = []
n = 6
for i in range(n): # i表示每一行的索引

    row = [1] # 開始的1

    for k in range(i): # 中間填0,尾部填1
        row.append(1) if k == i-1 else row.append(0)
    triangle.append(row)

    if i==0:
        continue

    for j in range(1,i//2+1): # n=3才能進來
        val = triangle[i-1][j-1] + triangle[i-1][j]
        row[j] = val # 這是新行的每個元素
        # 如果2j!=i,證明是偶數行,要找對稱位置賦值
        # 如果2j = i,證明是奇數行,這時候j是中點,無對稱位置,跳過
        if 2j != i:
            row[i-j] = val
            
print(triangle)
3-2方法

與3-1相同,不同的是,用1占位

triangle=[]
n = 6
for i in range(n):
    row = [1]*(i+1)
    triangle.append(row)    
    if i == 0:
        continue

    for j in range(1,i//2+1):
        val = triangle[i-1][j-1]+triangle[i-1][j]
        row[j]=val
        if 2j!=i:
            row[i-j]=val
print(triangle)

楊輝三角的解題思想總結:
第一種方法,根據上一行湊下一行,先湊頭尾,再湊中間
第二種方法,根據上一行湊下一行,上一行尾部加0,利用索引游戲,頭尾中間都湊了
第三種方法,先打印占位形狀,利用對稱賦值,提升效率


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM