def partitions(n):
# base case of recursion: zero is the sum of the empty list
if n == 0:
yield []
return
# modify partitions of n-1 to form partitions of n
for p in partitions(n-1):
yield [1] + p
if p and (len(p) < 2 or p[1] > p[0]):
yield [p[0] + 1] + p[1:]
说明: 如果您有n个的分区,你可以把它从一个减去减少到n-1的一个典型方式分区分区中最小的项目。例如。 1 + 2 + 3 => 2 + 3,2 + 4 => 1 + 4。这个算法逆过程:对于n-1的每个分区p,它找出n的分区,这个分区将通过这个过程减少到p。因此,在考虑减少n-1的分区的步骤中,n的每个分区只输出一次。算法翻译从蟒蛇PHP或伪代码整数分区
这是在Python中获取数字的所有可能分区的代码。我不擅长Python。如果有人能够将其转化为伪代码(或详细描述)或PHP,我将非常感激。上面的解释在我的脑海里产生了一个疑问:“从分区中的最小项目中减去一个”。我还可以从第二小或其他元素中减去一个。那么,为什么只有最小的?如果有人能够向我解释整个想法,那将是非常感激的。 谢谢。
我不认为你可以只是让人们在这里为你编码。你必须先自己付出一些努力。 – jamylak 2012-04-06 08:50:57
@jamylak我不是要求进入PHP的代码。我也写过伪代码。只是想获得代码。而已!那么你评价它为-1是什么?如果我的名声较低,这并不意味着我所要求或做的无用或愚蠢。 – Sushant 2012-04-06 08:56:14
'partitions(n)'不会返回/为'0'以外的值产生任何值...... – knittl 2012-04-06 09:02:15