【发布时间】:2013-01-04 18:31:11
【问题描述】:
我正在尝试编写一个 C 代码来生成所有可能的分区(分成 2 个或更多部分),其中包含给定数量的 distinct 元素。给定分区的所有数字的总和应该等于给定的数字。例如,对于输入 n = 6,具有 2 个或更多具有不同元素的元素的所有可能分区是:
- 1、5
- 1、2、3
- 2, 4
我认为递归方法应该可行,但我无法处理不同元素的附加约束。非常感谢 C/C++/Java 中的伪代码或示例代码。
谢谢!
编辑:如果它使事情变得更容易,我可以忽略分区具有至少 2 个元素的限制。这将允许将数字本身添加到列表中(例如,6 本身将是一个微不足道但有效的分区)。
【问题讨论】:
-
@DavidRF 谢谢,但链接计算分区的数量(不是实际的分区),并且允许重复。更准确的描述是oeis.org/A000009,但它仍然不能帮助我生成这些分区。
-
@mbeckish 这个问题不同,因为我还要求分区中的每个数字都是不同的。所以像
n1 这样的东西是不允许的。 -
为一组元素(特别是数字)生成一组分区是回溯的经典问题。
标签: c algorithm recursion numbers decomposition