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]
四則運算 中序轉後序
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言