============================================
计算杨辉三角前六行:
##求杨辉三角
ROW=10
lst[0]=[1]
lst[1]=[1,1]
print(" "*ROW,lst[0])
print(" "*(ROW-1),lst[1])
for I in range(2,ROW):
length=len(lst[I-1])
lst[I]=[1]
for J in range(length-1):
lst[I].append(lst[I-1][J]+lst[I-1][J+1])
lst[I].append(1)
print(" "*(ROW-I),lst[I])
-----------------
##两层循环打印杨辉三角
#使用二维数组
lst=[[1],[1,1]]
n=6
for I in range(2,n):
lst.append([1])
for J in range(0,I-1):
lst[I].append(lst[I-1][J]+lst[I-1][J+1])
lst[I].append(1)
print(lst)
----------------------
##使用一维数组
pre = [1]
n = 6
for I in range(n):
print(pre)
pre.append(0)
newlst = []
for J in range(I+2):
newlst.append(pre[J-1] + pre[J])
lst.append(newlst)
pre=newlst
-----------------------
##在前后补0来计算;
lst = [[1]]
n = 6
for I in range(n):
print(lst[I])
lst[I].insert(0,0)
lst[I].append(0)
newlst=[]
for J in range(I+2):
newlst.append(lst[I][J]+lst[I][J+1])
lst.append(newlst)
--------------------------
##只在后面补零计算杨辉三角
lst = [[1]]
n = 6
for I in range(n):
print(lst[I])
lst[I].append(0)
newlst = []
for J in range(I+2):
newlst.append(lst[I][J-1]+lst[I][J])
lst.append(newlst)
-------------------------
##对称性解法:
triangle = []
n = 6
for I in range(n):
row = [1] * (I + 1)
triangle.append(row)
for J in range(I//2):
tmp = triangle[I-1][J] + triangle[I-1][J+1]
row[J+1] = tmp
if I % 2 == 1:
row[-J-2] = tmp
print(triangle)
--------------------------------
#对称性,一位数组
n = 6
for I in range(n):
new = [1] * (I + 1)
for J in range(I // 2):
tmp = pre[J] + pre[J+1]
new[J+1] = tmp
if I % 2 == 1:
new[-J-2] = tmp
pre = new
print(pre)
-----------------------------
#对称性,一个一维数组
n = 6
new=[1] * (n)
for I in range(n):
for J in range(I // 2):
tmp = new[J] + new[J+1]
new[J+1] = tmp
if I % 2 == 1:
new[-J-2] = tmp
print(new)