2013-04-24 52 views
0

是否有任何庫用於進行這些設置操作。特定尺寸的所有可能的唯一集合

我有一組(x,y)點。然後我需要創建一個Set(族)集。家族中的每個Set都應包含一定數量的元素。一組中元素的順序無關緊要。所以[m,l,n]與[l,m,n]相同。

+0

AFAICS你需要一個'Point'類,然後誰擁有'設置',讓我們說,'Figure'和持有其他類的類'設置

'。不需要第三方庫來處理這個問題。 – 2013-04-24 20:26:44

+1

首先生成所有組合需要指數級更多的內存。但是,如果您在生成時處理每個組合,您的固定內存使用量會很小。生成組合是一個循環和遞歸的問題。 – 2013-04-24 20:29:38

回答

3

您要求的內容叫做combinations。番石榴有a method計算排列,這是相關的。但是,如果您只需要組合,那麼不太知道的combinatoricslib看起來像The Right Thing。下面是該庫的網站爲例,使用String S:

// Create the initial vector 
ICombinatoricsVector<String> initialVector = Factory.createVector(
    new String[] { "red", "black", "white", "green", "blue" }); 

// Create a simple combination generator to generate 3-combinations of the initial vector 
Generator<String> gen = Factory.createSimpleCombinationGenerator(initialVector, 3); 

// Print all possible combinations 
for (ICombinatoricsVector<String> combination : gen) { 
    System.out.println(combination); 
} 
+0

我不認爲他在問組合。他只是要求一個可以用來存儲他的觀點的數據結構。 – eboix 2013-04-24 20:31:59

+2

據我所知,他需要生成一些大小爲「k」的所有可能的子集。 – 2013-04-24 20:33:05

+0

基於此,我認爲他要求生成一個固定長度的組合,也就是說順序無關緊要的排列組合:「然後我需要創建一個Set(族)集合。一定數量的元素,集合中元素的順序無關緊要,因此[m,l,n]與[l,m,n]是相同的集合。 – sigpwned 2013-04-24 20:34:55