从底行开始增加一个三角形

厨师1075

我正在从这个问题(最大路径三角形(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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章