【发布时间】:2018-12-05 05:33:17
【问题描述】:
给定一组可能包含重复的数字,找出它的所有分区。 (划分集合的所有可能方式。)
例如,多重集 {1, 1, 2} 有 4 个分区:
分区 1 = { {1}, {1}, {2} } 分区 2 = { {1}, {1, 2} } 分区 3 = { {1, 1}, {2} } 分区 4 = { {1, 1, 2} }
这是一个类似的问题How to find all partitions of a set,但在那个问题中,所有数字都是不同的。
设置分区的定义:https://en.wikipedia.org/wiki/Partition_of_a_set
多集定义:https://en.wikipedia.org/wiki/Multiset
我们将不胜感激以任何通用编程语言编写并带有一些解释的解决方案。
更新:
似乎很多人都对这个问题的问题感到困惑。它不要求给定集合的所有可能子集。相反,它要求您找出划分给定数字集合的所有不同方法。
【问题讨论】:
-
每个分区中的一个集合包含零个、一个或两个 1,以及零个或一个 2。然后可以递归地对剩余的较小集合进行分区。
-
@user3386109 你能写代码吗?
-
顺便说一下,“多集的划分”并没有唯一的定义,因为有四种可能性:划分为一组集合;一组多组;多组集合;或多组多组。您的示例表明您正在寻找最后一个,但由于所有四种分区类型都有其用途,因此最好清楚。
-
对不起,这是一个错误。
标签: algorithm set combinations partitioning