比方说,我们有一组S
其中包含几个子集:生成一组(而不是幂)的所有“独特的”子集
- [a,b,c]
- [a,b]
- [c]
- [d,e,f]
- [d,f]
- [e]
让我们也说,S包含六个独特的元素:a, b, c, d, e
和f
。
我们如何才能找到S
所有可能的子集,其中包含S
的每个唯一元素?
的函数的结果/方法应该是这样的:
[[a,b,c], [d,e,f]];
[[a,b,c], [d,f], [e]];
[[a,b], [c], [d,e,f]];
[[a,b], [c], [d,f], [e]].
是否有任何的最佳做法或任何标准实现这一目标的方式?
我将不胜感激一个伪代码,Ruby或Erlang的例子。
很好用!但是我发现它挂在任何等于或大于10件物品的东西上。任何想法为什么?运行分区([1,2,3,4,5,6,7,8,9,10])挂起红宝石 – mbdev 2012-03-15 21:39:29
涉及的集合变得非常快--10个物品阵列中有115975个分区,仍然只有几秒钟在我的机器上。如果你在irb中运行它,那么它会尝试并显示结果 - 这不是一个好主意! – 2012-03-15 22:02:44
它实际上挂在rails s中,并在RubyMine的rspec下运行。我在运行Lion的Mac上。我的问题实际上比这更专业,所以我把它发布在这里:http://stackoverflow.com/questions/9732944/get-all-possible-subsets-preserving-order – mbdev 2012-03-16 06:34:27