Дан целочисленный массив размера N. Найти максимальное количество его одинаковых элементов.
некоем образом не получается
Модератор: Модераторы
Oleg_D писал(а):Вот самый быстрый, но прожорливый по памяти способ (сложнось линейная)
------------------------
const CSize = ...; // размер массива
var
Numbers: array [0...CSize] of integer; // обрабатываемый массив
Counts: array [0...MaxInt] of integer; // массив счетчиков
i, max : integer;
begin
FillChar(Counts, SizeOf(Counts), 0); // очистка счетчиков
for i:=0 to CSize-1 do Inc( Counts[ Numbers[i] ] ); // накопление счетчиков (число в массиве - это индекс счетчика)
// Осталось пробежаться по массиву Counts и выбрать максимальное значение
max:= MinInt; // ноль или минимальное целое
for i:=0 to MaxInt-1 do if max < Counts[i] then max := Counts[i];
end.
------------------------
На ошибки не проверял.
informat писал(а):А куда считаются отрицательные числа?
Как будет работать программа для массива:
1 -30000 30000 -30000 ?
Вернуться в Обучение Free Pascal
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1