![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
beeeeeest |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 6.2.2014 Репутация: нет Всего: нет |
Дан одномерный массив A[N], найти наиболее часто встречающееся число. Если таких чисел несколько, то определить наименьшее из них.
|
|||
|
||||
rudolfninja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: 3 Всего: 6 |
Алгоритм придумал не самый оптимальный, но для лабораторной работы пойдет. Суть в следующем:
Проходим по массиву считаем вхождение каждого элемента в массив. Для ускорения работы каждый текущий элемент мы сравниваем только со следующими (с предыдущими не сравниваем). Результат должен получиться правильный, т.к. если у тебя первый элемент, допустим, цифра 5 и четвертый элемент цифра 5, то первая "пятерка" будет встречаться 2 раза, а вторая - один. Но суть в том, что мы отметили, что цифра 5 встречается 2 раза. Количество вхождений каждого элемента заносим в отдельный массив (element_counts). Потом проходим по массиву element_counts и находим там максимальный элемент (max_count). Таким образом мы найдем индекс элемента из входного массива, который встречался большее число раз. Далее снова проходим по массиву element_counts, но теперь ищем количество элементов, равных max_count. Если находим такой элемент, то запихиваем в массив same_elements элемент из входного массива с соответствующим индексом, при этом инкрементируем переменную same_elements_count. Так мы получим массив наиболее часто встречающееся чисел. В итоге мы получим массив с числами, которые встречаются в исходном массиве одинаковое максимальное количество раз. Остается только найти минимальный элемент среди массива same_elements. Ниже реализация этого алгоритма на Си++. Для простоты реализации я взял массив фиксированный массив. Ввод количества элементов массива и их значений с клавиатуры добавишь сам. Только не забудь, в этом случае, поменять размер всех массивов.
|
|||
|
||||
Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 7 Всего: 49 |
С точки зрения объема кода все будет существенно проще, если вспомнить, что в C/C++ есть встроенная сортировка (qsort() или std::sort(), например). Если предварительно отсортировать массив, то поиск в нем самой длинной последовательности постоянных значений станет тривиальной задачей.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |