我正在从这个问题(最大路径三角形(Python))获得一些指导,但是在我已经开始写出我的想法之后,我偶然发现了它。
我想找到三角形中从下到上的最大数字。因此,一旦循环到达末端,三角形的最终位置将是下面各行中数字最大的加法。
例如...如果这是三角形:
2
3 7
8 2 10
2 6 9 4
它将第n行与第n-1行相加,以记住最大值,因此,如果我的代码运行,则经过一轮迭代后,三角形看起来像这样。
2
3 7
14 11 19
但是,我编写的代码似乎无法替换上面列表中的元素。
for i in range(len(a)-1, 0, 1):
for j in range(0, len(a[i])-1, 1):
'''
i = Row position
j = Column position
'''
a[i-1][j] = max(a[i][j] + a[i-1][j], a[i][j+1] + a[i-1][j])
print a
我知道它是可行的,因为当我输入数字进行检查时,它会给出正确的答案。从我提供的三角形中,检查的第一个数字将是2 + 8和6 + 8,使14成为正确答案。
那么我的代码有什么问题呢?
谢谢 :)
在第一个for
语句中,您需要将增量更改为-1。您不能使用正数从len(a)-1变为0
for i in range(len(a)-1, 0, -1):
for j in range(0, len(a[i])-1, 1):
'''
i = Row position
j = Column position
'''
a[i-1][j] = max(a[i][j] + a[i-1][j], a[i][j+1] + a[i-1][j])
print a
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句