如何使用N

时间:2017-06-08 00:19:24

标签: python

我编辑了我的问题,因为我认为我没有很好地解释它。作为重复链接的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

1 个答案:

答案 0 :(得分:0)

您搜索的是分区功能p。 查看https://en.m.wikipedia.org/wiki/Partition_(number_theory) 它包含递归公式,该公式在输入方面仅是线性的。