我正在尝试计算可能的对数,这可以通过从两个集合中取值来得出。没有人集合。我还尝试使用 Java Set来实现它。但是我一直坚持逻辑,如何计算这种可能的组合。
问题示例:
Input:
Set 1: [0, 1, 4]
Set 2: [2, 3]
Set None: []
在这里,可能的对组合为[0,2],[0,3],[1,2],[1,3],[4,2],[4,3]
Output:
6 combination to choose pair by taking one value from each set
这里是代码:
static Set<Integer> countryOne = new HashSet();
static Set<Integer> countryTwo = new HashSet();
static Set<Integer> countryNone = new HashSet();
static int journeyToMoon(int n, int[][] astronaut) {
///Separating diffrent country from input
countryOne.add(astronaut[0][0]); countryOne.add(astronaut[0][1]);
for(int i=1; i<astronaut.length; i++){
boolean countryCheckFlag = false;
for(int j=0; j<astronaut[i].length; j++){
if(countryOne.contains(astronaut[i][j])){
countryCheckFlag = true;
}
}
if(countryCheckFlag){countryOne.add(astronaut[i][0]); countryOne.add(astronaut[i][1]);}
else {countryTwo.add(astronaut[i][0]); countryTwo.add(astronaut[i][1]);}
}
///Separating country which not present in input
for(int i=0; i<n; i++){
if(!countryOne.contains(i) && !countryTwo.contains(i))
countryNone.add(i);
}
//Now i have two diffrent set
return 0;
}
输入在一定程度上可能会有所不同,例如这样
Input:
Set 1: [0, 2]
Set 2: []
Set None: [1, 3]
在这里,可能的像对组合是[0,1],[0,3],[2,1],[2,3]像以前一样,但是因为它是Set None,所以它将在将None设置为多余,例如[1,3]
Output:
5 combination to choose pair by taking one value from each set
这里可能是答案,例如,总组合=(第一组和第二组可能的乘积与乘积)+(第一组和第二组的可能组合各不带任何设定)+(所有无差异的集合无可能的组合) )
如果是,如何进行计算。输入范围在1到10 ^ 5之间。谢谢。
答案 0 :(得分:1)
要计算组合总数,您只需使用
int a = set1.size() * set2.size();
要计算n
元素对的总数,可以使用公式(n*n - n) / 2
,因此在您的示例中,可能是
int x = setNone.size();
int b = (x * x - x) / 2