擅长:python、mysql、java
<p>生成所有可能的组合并用匹配的和过滤掉这些组合的工作太多了。但是,您可以编写自己的函数,精确且仅生成所需的函数:</p>
<pre><code>def combos(lst, total, max=None):
if total < 0:
return
elif total == 0:
yield []
for x in lst:
if max is None or x <= max:
for com in combos(lst, total - x, x):
yield [x] + com
>>> list(combos([1, 2, 3, 4, 5, 6], 4))
[[1, 1, 1, 1], [2, 1, 1], [2, 2], [3, 1], [4]]
</code></pre>