<分区>
我已经编辑了我的问题,因为我认为我没有很好地解释它。作为重复链接的 subset_sum 函数似乎是在数字列表是随机的时,但在我的情况下也可以使用。但是,对于像我下面的函数这样的大数字,它似乎效率低下。我的问题是基于 N 的值始终已知的数字列表。
如果 N 为 10,则数字列表将为 1 到 9 或范围 (1, N)。该函数应返回从 1 到 9 的所有唯一数字组合,总和为 10。在这种情况下,我下面的函数将解决此问题并返回 9,但是对于大数字,它需要很长时间。在我看来,当数字范围已知时,应该有更好的方法来解决这个问题,而不是必须遍历每个可能的组合。也许我错了。
import itertools
def counter(n):
count = 0
l = range(1, n)
for i in range(1, n):
for c in itertools.combinations(l, i):
if sum(c) == n:
count += 1
return count