Я пытаюсь написать алгоритм, который говорит мне, сколько пар я мог бы генерировать с элементами, поступающими из нескольких наборов значений. Например, у меня есть следующие наборы: {1,2,3} {4,5} {6}Комбинированный алгоритм из множества множеств
Из этих наборов я могу сгенерировать 11 пар: {1,4}, {1,5}, {1,6}, {2,4}, {2,5}, {2,6}, {3,4}, {3,5}, {3,6}, {4,6}, {5 , 6}
Я написал следующий алгоритм:
int result=0;
for(int k=0;k<numberOfSets;k++){ //map is a list where I store all my sets
int size1 = map.get(k);
for(int l=k+1;l<numberOfSets;l++){
int size2 = map.get(l);
result += size1*size2;
}
}
Но, как вы можете видеть, что алгоритм не очень масштабируемым. Если количество наборов увеличивается, алгоритм начинает работать очень плохо. Я что-то упустил? Есть ли алгоритм, который может мне помочь? Я искал комбинации и алгоритмы перестановок, но я не очень уверен, что это правильный путь для этого.
Большое спасибо заранее
Почему бы вам просто не сохранить количество уникальных элементов в каждом наборе? то это может повысить вашу производительность.Кстати, вы ищете уникальные пары? то ваш код будет неправильно выводить количество пар. –