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