【发布时间】:2011-08-26 14:44:04
【问题描述】:
我有一个元素列表(1、2、3),我需要获取该列表的超集(幂集)(不重复元素)。所以基本上我需要创建一个列表,如下所示:
{1}
{2}
{3}
{1, 2}
{1, 3}
{2, 3}
{1, 2, 3}
什么是最好的(在这种情况下简单> 效率,列表不会很大)实现这一点的方法是什么?最好使用 Java,但任何语言的解决方案都会很有用。
【问题讨论】:
-
您想要该列表的所有子集。我建议递归。但是,如果您要处理的元素超过 30-40 个,您将无法处理拥有的 HUGE(超过 1TB 的数据)。这是干什么用的?
-
您正在寻找的这种数据结构称为 Powerset(不同之处在于它还包含一个空集)。已经在 SO 上讨论过了。
-
感谢 Zenzen 为我指明了正确的方向...我找到了 stackoverflow.com/questions/1670862/…。
-
那些不是permutations,那些是子集。
标签: java algorithm powerset superset