Рассчитать набор пары, взяв одно значение из каждого набора - PullRequest
0 голосов
/ 21 октября 2018

Я пытаюсь рассчитать возможное количество пар, которое можно сделать, взяв значение из двух двух наборов.Никто не устанавливает репликацию.Я также пытаюсь реализовать это с помощью 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], как и раньше, но так как оно установлено None, то оносоздаст набор между Set None как дополнительный, например, [1,3]

Output:
5 combination to choose pair by taking one value from each set

Здесь Might be Answer like, Total комбинация = (возможная комбинация набора один и набора два с продуктом) + (возможная комбинацияустановите 1 и установите 2 с заданным none каждый) + (Все возможные комбинации Set None с разным значением)

Если это так, как его рассчитать.Диапазон ввода будет от 1 до 10 ^ 5.Спасибо.

1 Ответ

0 голосов
/ 21 октября 2018

Для вычисления общего количества комбинаций вы можете просто использовать

int a = set1.size() * set2.size();

Для вычисления общего количества пар n элементов вы можете использовать формулу (n*n - n) / 2, так что в вашем примере это можетбыть

int x = setNone.size();
int b = (x * x - x) / 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...