Pers.narod.ru. Алгоритмы. Самый часто встречающийся элемент в массиве

Определить, какой элемент повторяется в массиве A[1],...,A[N] наибольшее число раз, вывести этот элемент и его порядковый номер.

Эта задача намного проще, чем, например, поиск цепочки повторяющихся значений. При этом создания дополнительных массивов нам не понадобится, мы просто сравним элементы по принципу "каждый с каждым" и будем искать максимум от количества выполнений равенства a[i]=a[j].

const n=10;
 a: array [1..10] of integer = (1,2,0,1,2,1,3,3,4,2);
var i,j,k,l,max:integer;
begin
 max:=0;
 for i:=1 to n-1 do begin
  k:=1;
  for j:=i+1 to n do if a[i]=a[j] then inc(k);
  if k>max then begin max:=k; l:=i; end;
 end;
 writeln ('Элемент=',a[l],', его номер=',l,', ',max,' раз(а)');
 reset (input); readln;
end.

Искомых элементов может быть несколько, если нужно найти не первый, а последний из них изменится только знак ">" на ">=" в операторе if k>max.

Если нужно найти все элементы, встречающиеся максимальное число раз, самое простое поступить так: после поиска максимума вместо единственного оператора печати ответа writeln поставить следующий блок кода:

for i:=1 to n-1 do begin
 k:=1;
 for j:=i+1 to n do if a[i]=a[j] then inc(k);
 if k=max then begin
  writeln ('Элемент=',a[i],', его номер=',i,', ',max,' раз(а)');
 end;
end;

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

Рейтинг@Mail.ru

вверх гостевая; E-mail
Hosted by uCoz