稍微离开树加蟒蛇

时间:2014-03-21 18:29:09

标签: python

我正在解决Project Euler的一个问题,这个代码适用于15个级别的树中最大的路径和。现在我遇到了100个级别的问题,我的代码似乎返回了一个9的答案。我没有把树放到这里,因为问题似乎严格地在代码中。有人可以帮忙吗?

def compressLines(n):
    start = time.time()
    t = n
    while t != 0:
        p = (r[t-1].split())
        s = (r[t].split())
        g = []
        for i in range(0,len(p)):
            f = int(p[i]) + int(s[i])
            u = int(p[i]) + int(s[i+1])
            if f > u:
                p[i] = f
            if f < u:
                p[i] = u
        del r[-2:]
        string = ""
        for i in p:
            string+=(" "+str(i))
        r.append(string)        
        t = t-1
    print r, "solved in", time.time() - start, "seconds"

这给了我一个答案(['7264']在0.0369999408722秒内解决了),当正确答案是7273时。

为了使代码更容易阅读,我将“p”定义为倒数第二行,将“s”定义为每次代码运行时的最后一行。代码本质上做的是将最后一行压缩到它上面的那一行,在每种情况下产生最大的总和,一旦达到最终答案就停止。有谁能发现问题?

1 个答案:

答案 0 :(得分:1)

您不会考虑两条路径具有相同权重的情况:

        if f > u:
            p[i] = f
        if f < u:
            p[i] = u

f == u时,您未更新p[i]