Я просто напишу код, поскольку его легко понять:
unordered_map<int, int> global;
for(set<int> &s : sets){ //for each set you have
for(int si : s) { //for each element of the set (all unique by definition)
global[si]++;
}
}
int mostFrequent = *sets[0].begin(); //any existing element in any set is allowed
int frequency = global[mostFrequent];
for (auto& it: global) { //for each element in all sets
if(it.second > frequency) {
mostFrequent = it.first;
frequency = it.second;
}
}
cout<<"answer is "<<mostFrequent<<endl;
Ваш вопрос немного странный в том смысле, что set
по определению не будет иметь повторяющихся элементов в это, поэтому нет смысла подчеркивать, что вам не нужен элемент, который встречается « максимальное количество раз », поскольку это происходит непосредственно из определения set
, что этот элемент будет таким же, как элемент, который встречается в максимальном количестве наборов .
Если вы имеете в виду set
, которые разрешают повторяющиеся элементы, вы должны использовать vector
или list
. В этом случае решением было бы преобразовать такую структуру в set
.