簡體   English   中英

稍微關閉樹除python

[英]slightly off tree addition python

我正在為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"

當正確的答案是7273時,這給了我一個答案(['7264']在0.0369999408722秒內解決了)。

為了使代碼更易於閱讀,每次代碼自身運行時,我都將“ p”定義為倒數第二行,將“ s”定義為最后一行。 代碼本質上所做的就是將最后一行壓縮到上面的每一行中,從而在每種情況下產生最大的總和,一旦到達最終答案就停止。 誰能發現問題?

您不會考慮兩條路徑的權重相等的情況:

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

f == u您不更新p[i]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM