擅长:python、mysql、java
<p>您可能希望按值发送score变量,但您是按引用发送的,因此所有可能路径的分数都会添加到该变量中。你知道吗</p>
<p>这是我的方法:</p>
<pre><code>def maxscore(start, parentals, score):
newParentals = parentals + start + '|'
print newParentals, score
scores = []
if graph[start]:
for nextNode in graph[start]:
if nextNode not in newParentals.split('|'):
scores.append(maxscore(nextNode, newParentals, score + graph[start][nextNode]))
return sorted(scores)[-1]
else:
return score
graph = {
'a': {'b': 2, 'c': 4},
'b': {'d': 5},
'c': {'a': 1, 'e': 3},
'd': {'f': 4},
'e': {'b': 2, 'f': 3, 'g': 2},
'f': {},
'g': {}
}
print(maxscore('a', '', 0))
</code></pre>
<p>这就是印刷的内容:</p>
<pre><code>a| 0
a|c| 4
a|c|e| 7
a|c|e|b| 9
a|c|e|b|d| 14
a|c|e|b|d|f| 18
a|c|e|g| 9
a|c|e|f| 10
a|b| 2
a|b|d| 7
a|b|d|f| 11
18
</code></pre>
<p>您可以看到它如何检查所有可能的路径,然后选择最高分:D</p>