def Triangel(a,n):
#d[i][j]即为状态,从格子(i,j)出发能得到的最大值
d=[[0 for col in range(n+1)] for row in range(n+1)]
for i in range(n+1):
d[n][i]=a[n][i]
#双重循环自下而上计算最大和
i=n-1
while(i>=0):
for j in range(i+1):
d[i][j]=a[i][j]+max(d[i+1][j],d[i+1][j+1]) #状态转移方程
i-=1
print(d[0][0])
#test
a=[[1],[3,2],[4,10,1],[4,3,2,20]] #数字三角形数据
n=3 #层数,从0开始计数
Triangel(a,n)
数字三角形
最新推荐文章于 2023-03-15 19:19:14 发布