擅长:python、mysql、java
<p>暴力强制,通过使用递归(对每个分段按顺序,我们递归地找到使用分段的最佳分数,而不使用分段的最佳分数。如果剩余项目没有可能的分段组合,则得分为0):</p>
<pre><code>segment_scores = (('A', 'B', 'C', 'D'), .99), (('A', 'B', 'C', 'E'), .77) #, ...
def best_score_for(items, segments, subtotal = 1.0):
if not items: return subtotal
if not segments: return 0.0
segment, score = segments[0]
best_without = best_score_for(items, segments[1:], subtotal)
return max(
best_score_for(items.difference(segment), segments[1:], subtotal * score),
best_without
) if items.issuperset(segment) else best_without
best_score_for(set('ABCDEFGHI'), segment_scores) # .430155
</code></pre>