枚举n的k部分(并保留列表)

时间:2015-04-16 11:45:08

标签: python-2.7 recursion partitioning

在对n进行分区后,我没有“保持”k的组合。我开始理解这个问题以及它是如何解决的,当我回到树上时,我只是不知道如何堆叠值。

这是一个编码问题,因为它是递归的。

我有:

def p(n,k):
    lst = []
    if n < k:
        return 0
    elif k == 1:
       #somehow append subset (k',k',k') to lst
    elif k == n:
       #somehow append subset (k',k',k') to lst
    else:
        p(n-1, k-1)
        p(n-k, k)
        # return p(n-1, k-1) + p(n-k, k) -- gives the sum, that's where i'm now
    return lst

print p(7,3)

#I want [(5,1,1), (4,2,1), (3,3,1), (3,2,2)]

我得到部分k == 1,但我没有将+ 1 ...(k-1时间)叠加到得到(5,1,1)。 k == n基本情况也是如此。奖金问题,如果我可以,如何获得(3,2,2)的k?

谢谢

0 个答案:

没有答案