Euler#18与Python

Euler#18与Python,python,Python,我正在努力解决这个问题。 我尝试了一种贪婪算法,python从三角形底部开始工作。 然后我向上移动一行,用贪婪算法找到最大的路径,并尝试连接最大的路径,但它不起作用。你有什么提示可以让我走上正确的道路而不泄露问题的解决方案吗 以下是函数: def greedy(i): if i%15==0: a=[(b[i-15],i-15),(b[i-14],i-14)] a=sorted(a) a=a[-1] else: a=[

我正在努力解决这个问题。 我尝试了一种贪婪算法,python从三角形底部开始工作。 然后我向上移动一行,用贪婪算法找到最大的路径,并尝试连接最大的路径,但它不起作用。你有什么提示可以让我走上正确的道路而不泄露问题的解决方案吗

以下是函数:

def greedy(i):
    if i%15==0:
        a=[(b[i-15],i-15),(b[i-14],i-14)]
        a=sorted(a)
        a=a[-1]
    else:
        a=[(b[i-15],i-15),(b[i-16],i-16),(b[i-14],i-14)]
        a=sorted(a)
        a=a[-1]
    return a
干杯你听说过吗

考虑一下这个问题。什么使路线最好?最后一步和前一步有什么关系吗?另外,看看这个三角形,贪婪算法没有给出正确答案:

      1
    2   3
  9   1   2
1   1   2   4

@我相信他指的是:提示:这不是一个贪婪的问题。一个疯狂的答案出现了:。。。搜索引擎是你的朋友…最好的方法就是求和,你不需要路径,只需要求最大和,所以对于一行中的每个值(从第二个开始)求和左上方和左上方的值之间的最大值。我认为最好的方法是向后解决这个问题,不确定动态编程是什么意思。@jamylak:你可以用自顶向下或自下而上的方法进行记忆。两者都一样。是的,这就是我所指的。谢谢你,魏子尧。我看了维基百科的文章,我发现它非常复杂。我的业余爱好是编程。你的例子中的三角形可以很容易地用贪心算法从底部开始求解。显然,这种方法不适用于euler问题18。@user1119429:您不必阅读,只要仔细想想就足够了:)提示:如果有一个从上到下的最佳路径,那么对于没有最后一个数字的子路径,它必须具有哪个属性?(自下而上也是如此)。另外,我编辑了这个示例,现在贪婪不起作用了。