Potrzebuję dowiedzieć się czy wartość w tablicy jest dominująca to znaczy że więcej niż połowa elementów tablicy jest jej równa.
#Na zbiorze nie mogę wykonywać żadnych operacji arytmetycznych czy porównywać elementów relacją porządku.
#Mogę jedynie stwierdzać czy są one sobie równe.
Czy zna ktoś jakieś algorytmy, podobno takie już istnieją jednak nie mogę ich znaleźć. Za każdą podpowiedź będę wdzięczny.
0
2
#include <iostream>
#include <array>
#include <map>
int main()
{
const std::size_t SIZE{ 9 };
std::array<int, SIZE> nums{ 3,3,1,2,1,3,1,3,3 }; //tablica jakiś wartości
// wypełnimy std::map wartościami z tablicy nums
// w ten sposób sprawdzimy ile razy każda liczba występuje
std::map<int, int> domin;
for (int i = 0; i < nums.size(); ++i) {
domin[nums[i]]++;
}
// szukamy maksymalnej liczby wystąpień
auto max = domin.cbegin();
for (auto cit = std::next(domin.cbegin()); cit != domin.cend(); ++cit) {
if (cit->second > max->second)
max = cit;
}
// jeśli liczba wystąpień jest większa niż połowa rozmiaru tablicy nums
if (max->second> nums.size() / 2) {
// wypisz liczbę dominującą
std::cout << "liczba " << max->first << " jest wartoscia dominujaca\n";
}
else {
std::cout << "w tablicy nie ma liczby dominujacej\n";
}
}
0
Dziękuję znalazłem jeszcze kilka http://www.geeksforgeeks.org/majority-element/