我試圖編寫代碼來解決標準的整數分區問題(Wikipedia)。我寫的代碼一團糟。我需要一個優雅的解決方案來解決該問題,因為我想改善自己的編碼風格。這不是作業問題。
3 回答

慕哥9229398
TA貢獻1877條經驗 獲得超6個贊
雖然這個答案很好,但我還是建議以下skovorodkin的答案:
>>> def partition(number):
... answer = set()
... answer.add((number, ))
... for x in range(1, number):
... for y in partition(number - x):
... answer.add(tuple(sorted((x, ) + y)))
... return answer
...
>>> partition(4)
set([(1, 3), (2, 2), (1, 1, 2), (1, 1, 1, 1), (4,)])
如果要所有排列(即(1,3)和(3,1))更改answer.add(tuple(sorted((x, ) + y))為answer.add((x, ) + y)
添加回答
舉報
0/150
提交
取消