擅长:python、mysql、java
<p>首先,不要调用变量<code>dict</code>。我要这样做:</p>
<blockquote>
<p>Edit</p>
</blockquote>
<p>最后阅读user@dand的答案,这是正确的,我没有什么要添加的,只是一个子进程调用<code>max</code>函数来处理所有结果。在</p>
<pre><code>a_dict = {"fe": 1, "je": 2, "jee": 3, "ain": 3, "dai": 5, "ne": 2, "ai": 2}
def words_points(w):
return max(sub_points(w))
def sub_points(w):
if not w:
yield 0
return
for word in a_dict:
if w.startswith(word):
for v in sub_points(w[len(word):]):
yield a_dict[word] + v
for v in sub_points(w[1:]):
yield -1 + v
for s in ("feaineai", "fejebain", "fejeain", "aiaiai", "aiaiaije"):
print(words_points(s))
</code></pre>