比方說我有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