代码是这样的:
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
和r
视为相同的事情,并且在r_prev
上执行的每个操作也是在r
上执行。
如何解决这个问题?
答案 0 :(得分:3)
执行r_prev = r
时,您没有复制列表。您给同一个列表添加了一个名称。要制作副本,请执行r_prev = list(r)
。