@LebedevImagine

Каким образом лучше решить данную простую задачу?

Есть простейшая задача, описанная ниже. Каким бы способом вы бы решили её? Прошу ответить по формату, описанном мною ниже. Моя мысль заключается в создании двухмерного массива, но, очевидно, что я мыслю в данный момент неправильно.

На вход подается N - количество строк, которые будут введены в программу. Сразу после ввода N вводятся определенные значения K - индификатор студента (ID). Значение К может быть очень велико. Если встречается K c определенным значением, например, 1043, то мы должны увеличить личную переменную студента Count на единицу.
Задача: вывести максимальный Count и соответствующий ему ID.
Пример ввода:
5
1029
1011
1029
8
78

Вывод:
2 1029

Иными словами, нужно определить, какое число встречается чаще всех и вывести значение, сколько раз встретилось это число.

Вопросы
1) Каким образом лучше реализовать эту задачу? Можно ли обойтись без создания огромного двухмерного массива?
2) Какие вообще есть варианты решения задачи кроме самого оптимального, описанного Вами в пункте 1)

UPD: Очевидно, что решить задачу можно с использованием динамических структур данных вроде хэш-таблиц или деревьев, как подметили в ответе на вопрос. Однако меня интересует решение с использованием стандартных средств языка без создания структур данных. Если такое решение невозможно, буду рад увидеть ваши предложения по решению
  • Вопрос задан
  • 191 просмотр
Решения вопроса 1
@pestunov
Я предлагаю такой алгоритм:
1. Взять динамическую структуру данных, позволяющую быстро добавлять и искать элементы (дерево, хеш-таблица).
2. К каждому элементу добавить счетчик повторений.
3. Поддерживать две глобальных переменных: ID_MAX и Count_MAX.
4. Сравнивать Count_MAX с очередным обновленным счетчиком и переприсваивать ID_MAX и Count_MAX, если обновленный счетчик превысит Count_MAX.
5, Вывести ID_MAX и Count_MAX.
P.S. А зачем здесь двумерный массив?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы