小编典典

优雅的Python代码,用于整数分区

algorithm

我试图编写代码来解决标准的整数分区问题(Wikipedia)。我写的代码一团糟。我需要一个优雅的解决方案来解决该问题,因为我想改善自己的编码风格。这不是作业问题。


阅读 428

收藏
2020-07-28

共1个答案

小编典典

虽然这个答案很好,但我还是建议以下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)

2020-07-28