比方说我有x
集合对象,并且每个集合都有一定数量的对象。我想创建一个数组,它将存储所有这些对象的唯一“和”组合。例如,如果我在集合A中有5个对象,集合B中有10个对象,集合C中有8个对象,那么我知道有5 * 10 * 8 = 400个独特的方式从每个对象中选择一个对象组。但我想实际上将这些组合存储在一个数组中。查找所有“和”组合多个集合
所以数组是多维的,是这样的:
{
{ a, a, a }
{ a, a, b }
{ a, a, c }
...
{ a, b, a }
{ a, b, b }
and so on...
}
我需要的解决方案,以尽可能高效,因为我处理的地方有潜在的数以千万计的组合情况。我不确定如何开始解决这个问题。
对不起,如果它不清楚,但我真的不知道该怎么称呼我想达到的目标,所以我只是尽我所能地描述它。感谢您提供任何帮助。
编辑:这是有关该问题的一些详细信息:
这个问题的目的是,我要计算每个结果数组“得分”值。然后,我想找到排名前n
分数并将它们返回给用户。所以实际上,我相信我不需要在内存中拥有整个数组。我可以遍历数组,计算得分,并将其添加到返回的数组,如果它的分数足够高。这样,我只需要不断在内存中的顶层n
对象。
我希望这使事情更清楚。
一些评论:notationally,我不认为'set'可以有多个相同的元素。或者,至少要知道,某些语言(例如Python)会在您使用'set()'时重复数据删除。其次 - 拥有数以百万计的连击数,你是否需要立即整个阵列?或者你可以迭代每一个。否则,你可能会遇到内存大小问题,不是吗? – dwanderson
嘿,对不起,如果不明确。每个集合A,B,C中的对象都是唯一的。如果你指的是符号'{a,a,a}',我想说的是'{从一个对象a,从一个对象a到另一个对象a,从集合c对象a'等等...... – Charles
啊,陷入困境,然后忽略第一点。第二个仍然站立。 – dwanderson