您的位置:首页 > 编程语言 > Python开发

三角形数字路径最大值问题

2017-04-30 21:00 495 查看
a=[

[75],

[95,64],

[17,47,82],

[18,35,87,10],

[20, 4, 82, 47, 65],

[19 ,1 ,23, 75 ,3, 34],

[88, 2, 77, 73, 7, 63, 67],

[99 ,65 ,4 ,28 ,6 ,16 ,70 ,92],

[41, 41, 26, 56, 83, 40, 80, 70, 33],

[41 ,48 ,72 ,33 ,47 ,32 ,37 ,16 ,94 ,29],

[53, 71, 44 ,65 ,25, 43 ,91, 52, 97, 51, 14],

[70 ,11 ,33 ,28 ,77 ,73 ,17 ,78 ,39 ,68 ,17 ,57],

[91, 71, 52, 38, 17, 14, 91, 43, 58, 50, 27, 29, 48],

[63 ,66 ,4 ,68 ,89 ,53 ,67 ,30 ,73 ,16 ,69, 87 ,40 ,31],

[4, 62, 98, 27, 23, 9, 70, 98, 73, 93, 38, 53 ,60, 4, 23] ]

已知三角形数字,求选取路径,使得路径上的数字和最大?

#阶梯相加
91    71    52
63   66    04   68
04   62   98   27   23


先比较4与62的大小,然后将大值加63得125放在63的位置,然后将04与62的位置换成0。

按此方法,进行最终会在最顶层得到一个数,为最大值。虽然不知道那个路径但是我们知道最大值。

根据此写代码:

def triangle(a):
L1=len(a)#L1=4
for i in range(L1-1,-1,-1):
for j in range(i):
a[i-1][j]+=max(a[i][j],a[i][j+1])
return a[0][0]
print(triangle(a))


此方法很巧妙,给我们的思路是,我们不需要知道那个路径,但是我们可以将繁变简,最终求得最大值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 数学