[英]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.