我正在从这个问题(Max path triangle (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正确答案。
我的代码出了什么问题?
谢谢:)
答案 0 :(得分:2)
在您的第一个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