从底行添加三角形

时间:2015-02-19 00:54:40

标签: python loops

我正在从这个问题(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正确答案。

我的代码出了什么问题?

谢谢:)

1 个答案:

答案 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