2013-10-15 174 views
0

在问这个问题之前,我已经做了一些研究,但没有得到相应的答案。我必须从一组2个类别中计算独特的可能组合。每个类别都有一些值。例如,在类别1中有3个值,在类别2中有4个值。计算唯一的组合

实施例:

Category1  Category2 
    A    D 
    B    E 
       F 

的独特组合我寻找是(A,AD,AE,AF,B,BD​​,BE,BF,d,E,F)。这些是11个组合。我需要的是一个计算这个的公式。

+1

'我已经完成了一些研究..'呃,你的意思是搜索? – devnull

+0

是的,我的意思是不会重复发生。 :) – Ritesh

+3

如果你自己做作业,你会更有可能通过这门课...... – ceejayoz

回答

2
Set<String> s = new HashSet<>(); 
for (String a: cat1){ 
    for (String b: cat2){ 
    s.add(a + b)  
    } 
} 
s.addAll(cat1); 
s.addAll(cat2); 
0

独特组合=组别工会类别2联盟(组别X类别2)

1

我读了一个问题,想要计算潜在组合的数目,不想真正确定这些组合。在这种情况下:

让A等于类别1中的选项数量,B等于类别2中的选项数量。

然后导致=(A * B)+ A + B.

+0

如果我们有两个以上的类别,该怎么办? – Ritesh

+0

@ user1794058将它们各自拥有的元素数相乘,然后将每个组中的元素数添加到结果中。 –

0

只要迭代二者的类别。

public static void main(String[] args) { 
    for (String first : new String[] {"A", "B", ""}) { 
     for (String second : new String[] {"", "D", "E", "F"}) { 
      String combination = first + second; 
      if (combination.isEmpty()) { 
       continue; 
      } 
      System.out.println(combination); 
     } 
    } 
} 
+1

D,E,F缺失 – Daniel

+0

哦,我明白了,谢谢。我已经更新了我的答案。 – Kojotak

1

对于含有Ñ元件的一组,则必须Ñ可能元素以供选择,所以在你的例子你有2 * 3 = 6个的组合。正如我所看到的,您想要包含仅选择其中一个类别的元素的组合。这给出了2 * 3 + 2 + 3 = 11(2 * 3个组合,每个类别一个元素,2个组合只有来自cat1的元素,3个组合只有来自cat2的元素)。

设n1为cat1中元素的个数,n2为cat2中的个数,则公式为n1 * n2 + n1 + n2。如果您想要包含完全不包含任何元素的组合,请添加1.