几个月前,我用一种效率极低的算法解决了 Project Euler 的问题 67。今天,我意识到如何才能做得更好,在尝试制作更高效的算法时,我遇到了一些问题。
代码是这样的:
r_prev = [59,0,0]
r_load = [73,41,0]
r = [0,0,0]
zero_r = [0,0,0]
rows = 3
while rows != 0:
position = 0
for x in r_load:
try:
if r_prev[position] > r_prev[position-1]:
r[position] = r_prev[position] + r_load[position]
else:
r[position] = r_prev[position-1] + r_load[position]
except IndexError:
r[position] = r_prev[position] + r_load[position]
position += 1
print r
rows -= 1
r_load = input("Enter next row")
r_prev = r
r_prev.append(0)
zero_r.append(0)
r = zero_r
它的工作原理是只保留到达某一点的最高路径的总和。此时我正在手动输入它(通过控制台)。当输入第一行时,它按预期执行,但是当输入第二行时,它认为r_prev
andr
是同一件事,并且执行的每个操作r_prev
也会执行 on r
。
我该如何解决这个问题?