內容選單標籤

2020年1月28日 星期二

CH13 演算法(全)


Python      序列 List
其他語言 陣列 Array

巴斯卡三角形:
1. 使用二維陣列
2. 使用 2 個一維陣列
3. 使用 1 個一維陣列
4. 使用公式
5. 使用遞迴

------------- 巴斯卡三角形 二維序列

p=[[0]*30 for i in range(20)]
n=10
p[0][1]=1
for i in range(1,(n+1)+1):
    for j in range(1,(n+1)+1):
        p[i][j]=p[i-1][j]+p[i-1][j-1]

for i in range(0,n+1):
    for j in range(0,(i+1)+1):
        print("%4d" %(p[i][j]),end='');
    print()

   0   1
   0   1   1
   0   1   2   1
   0   1   3   3   1
   0   1   4   6   4   1
   0   1   5  10  10   5   1
   0   1   6  15  20  15   6   1
   0   1   7  21  35  35  21   7   1
   0   1   8  28  56  70  56  28   8   1
   0   1   9  36  84 126 126  84  36   9   1
   0   1  10  45 120 210 252 210 120  45  10   1




------------- 巴斯卡三角形 2 個一維序列

list01=[];list02=[]
for i in range(15):
    list01.append(0)
    list02.append(0)

list01[1]=1
print(list01[1:2])
c=0

while c<10:
    for i in range(15):
        list02[i]=list01[i-1]+list01[i]

    for i in range(15):
        list01[i]=list02[i]

    c=c+1
    print(list02[1:c+2])

[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]
[1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1]




------------- 巴斯卡三角形  2個二維序列

def pascal(n):
    if n<=0:
        return
    else:
        row=[1]
        for i in range(n):
            print(row)
            p=row[:]
            for j in range(1,len(row)):
                row[j]=p[j]+p[j-1]
            row.append(1)

pascal(10) 

[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]




------------- 巴斯卡三角形  一維

n=int(input("幾層:"))
plist=[]
for i in range(1,n+1):
    plist.append(1)
    for j in range(i-2,0,-1):
        #print(i,j,plist[j],plist[j-1],end='')
        plist[j]=plist[j]+plist[j-1]
        #print(plist)
    print("行號:",i,plist)

幾層:10
行號: 1 [1]
行號: 2 [1, 1]
行號: 3 [1, 2, 1]
行號: 4 [1, 3, 3, 1]
行號: 5 [1, 4, 6, 4, 1]
行號: 6 [1, 5, 10, 10, 5, 1]
行號: 7 [1, 6, 15, 20, 15, 6, 1]
行號: 8 [1, 7, 21, 35, 35, 21, 7, 1]
行號: 9 [1, 8, 28, 56, 70, 56, 28, 8, 1]
行號: 10 [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]









四則運算 中序轉後序








沒有留言:

張貼留言