>>> 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,)])
@H_403_5@如果要所有排列(即(1,3)和(3,1))更改
answer.add(tuple(sorted((x, ) + y))
为answer.add((x, ) + y)
解决方法
我试图编写代码来解决标准的整数分区问题(Wikipedia)。我写的代码一团糟。我需要一个优雅的解决方案来解决该问题,因为我想改善自己的编码风格。这不是一个作业问题。
如果要所有排列(即(1,3)和(3,1))更改answer.add(tuple(sorted((x, ) + y))
为answer.add((x, )
+ y)
我试图编写代码来解决标准的整数分区问题(Wikipedia)。我写的代码一团糟。我需要一个优雅的解决方案来解决该问题,因为我想改善自己的编码风格。这不是一个作业问题。
如果要所有排列(即(1,3)和(3,1))更改answer.add(tuple(sorted((x, ) + y))
为answer.add((x, )
+ y)