在对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?
谢谢