【发布时间】:2016-03-16 22:38:41
【问题描述】:
给定一个包含 M 个子集合的集合,有什么好的算法(最好是用 Javascript 实现,但任何其他语言或伪代码也可以)找到 N 个对象的所有可能分布到 M 个子集合中?
例如,给定这样的设置:
var collection = [[],[],[]];
var items = ['a','b','c']
我希望结果看起来像这样
[['a','b','c'],[],[]]
[['a','b'],['c'],[]]
[['a','c'],['b'],[]]
[['a'],['b','c'],[]]
[['b','c'],['a'],[]]
[['b'],['c','a'],[]]
[['c'],['b','a'],[]]
[['a'],['b'],['c']]
[[],['a','b','c'],[]]
[[],['a'],['b','c']]
// etc
N 可以大于、小于或等于 N。此外,在示例中,我使用字符作为要分发的项目,但我希望算法能够分发任何对象输入。
【问题讨论】:
-
算法不是“在”一种语言。算法的实现是特定的语言。无论如何,你的问题太宽泛了。不要要求每个人解决你的整个工作。自己做,只询问你卡住的特定部分。
-
我认为我在下面发布的算法应该可以满足您的需求。如果@JK 能确认我是否正确,那就太好了。
标签: javascript algorithm partitioning combinatorics