<p>事实上,我认为在所有寻路问题中,你必须计算从起点到每个点的总路径长度。然后你必须同时计算,A的路径列表和B的路径列表</p>
<p>我不知道递归算法是否是练习的一部分,但我使用了一个简单的循环。在</p>
<pre><code>pathList = [[50,10,30],[5,90,20],[40,2,25],[10,8,999999]]
def all_steps(pathList):
stepListA,stepListB = [],[]
for n in range(0,len(pathList)):
#Step to A
if pathList[n][0]<=pathList[n][1] + pathList[n][2]:#A to A
new_stepListA = list(stepListA)
new_stepListA.append(pathList[n][0])
else: #B to A
new_stepListA = list(stepListB)
new_stepListA.extend([pathList[n][1],pathList[n][2]])
#Step to B
if pathList[n][1]<=pathList[n][2] + pathList[n][2]:#B to B
new_stepListB = list(stepListB)
new_stepListB.append(pathList[n][1])
else: #A to B
new_stepListB = list(stepListA)
new_stepListB.extend([pathList[n][0],pathList[n][2]])
stepListA = list(new_stepListA)
stepListB = list(new_stepListB)
if sum(stepListA)<=sum(stepListB):
print "finish on A"
return stepListA
else:
print "finish on B"
return stepListB
print all_steps(pathList)
</code></pre>