在提出这个问题之前我做了一些研究,但没有得到适当的答案。我必须从一组2个类别中计算出唯一可能的组合。每个类别都有一些值。例如,在类别1中有3个值,在类别2中有4个值。
示例:
Category1 Category2
A D
B E
F
我正在寻找的独特组合是(A,AD,AE,AF,B,BD,BE,BF,D,E,F)。这些是11种组合。我需要的是一个计算这个的公式。
答案 0 :(得分:2)
Set<String> s = new HashSet<>();
for (String a: cat1){
for (String b: cat2){
s.add(a + b)
}
}
s.addAll(cat1);
s.addAll(cat2);
答案 1 :(得分:1)
我认为这个问题想要计算潜在组合的数量,而不是想要实际确定这些组合是什么。在那种情况下:
令A等于第1类中的选项数,B等于第2类中的选项数。
然后结果=(A * B)+ A + B.
答案 2 :(得分:1)
对于包含 n 元素的集合,您可以选择 n 个可能的元素,因此在您的示例中,您有2 * 3 = 6个组合。如我所见,您希望包含仅选择其中一个类别的元素的组合。这给出了2 * 3 + 2 + 3 = 11(2 * 3组合,每个类别一个元素,2个组合仅包含来自cat1的元素,3个组合仅包含来自cat2的元素)。
设n1为cat1中的元素数,n2为cat2中的数,则公式为n1 * n2 + n1 + n2。如果要包含根本不包含任何元素的组合,请添加1。
答案 3 :(得分:0)
唯一组合= Category1 union Category2 union(Category1 x Category2)
答案 4 :(得分: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);
}
}
}