Algorytm częstotliwości elementów zbioru w szeregu

0

Witam. Potrzebuję pomocy w stworzeniu algorytmu, który po wprowadzeniu wielu sześciocyfrowych szeregów zbada częstotliwość padania każdej cyfry w zbiorze, a następnie wybierze szereg zawierający cyfry, które padały najczęściej. Algorytm może funkcjonować w Exelu lub języku C++.

0

Pierwsza część jest raczej banalna:

unordered_map<int, int> zliczenia;
for(int i=0;i<szeregi.size();i++){
   for(int i=0;i<6;i++){
      zliczenia[szeregi[i][j]]++;
   }
}

i już mamy mapę która dla liczby zwraca nam ile razy ta liczba wystąpiła we wszystkich szeregach. Możemy sobie to teraz posortować po wartościach w mapie i voila, mamy liczby najczęściej występujące.

Druga część, czyli wybranie szeregu zawierającego takie liczby jest trochę bardziej skomplikowane, bo nie mamy (jak rozumiem) pewności że istnieje szereg zawierający wszystkie 6 najlepszych liczb. Czy tak?
To jak w takim razie mamy oceniać który szereg jest lepszy. Załóżmy że liczby 1,2,3,4,5 w takiej kolejności to te nasze najczęściej występujące.
Czy "lepszy" będzie [1,2,5] czy [2,3,4]?

0

Najlepszym wyjściem z tej sytuacji będzie chyba wybranie szeregu, który zawiera liczby jak najbliżej położone tej, która najczęściej pojawia się w zbiorze, czyli w tym wypadku [1,2,5]. Jeżeli (dla tego przykładu) szereg zawiera liczbę 1, która ma najwyższy priorytet ze względu na to, że pojawia się najczęściej w zbiorze, to algorytm powinien wybrać szereg [1,2,5].

0

Jak dla mnie wystarczy zsumować częstość występowania każdej z liczb w ciągu dla każdego szeregu i wybrać ten, dla którego wyszedł najwyższy wynik.

0

@kosciej to też jakieś rozwiązanie, ale to jest kwestia jak autor sobie chce ;)
Jeśli chce najlepszą sumę to musi przelecieć wszystkie szeregi i wyliczyć sumę na podstawie mapy.
Jeśli chce wybrać szereg który zawiera liczby z "top" to najprosciej zrobić odwrotną mapę map<int,set<szereg>> która dla liczby zwraca zbiór szeregów w których występuje taka liczba. Potem po prostu wyciągamy sobie takie zbiory dla kolejnych liczb z top i je przecinamy aż nie zostanie nam 1 element w zbiorze (a jak nagle dostaniemy 0 elementów to oczywiście wyrzucamy zbiory dla ostatniej sprawdzonej liczby i idziemy dalej)

1 użytkowników online, w tym zalogowanych: 0, gości: 1