А нельзя попроще?
Просто посчитать.
Нужны 2 массива одинкаовой размерности: массив с числами Ai и масив счетчиков.
Код:
const
N = 100; // Длинна последовательности
var
I, J : Integer;
A, C : Array [1..N] Of Integer; // A - последовательность, C -счетчики
begin
// Инициализация
For I := 1 To N Do
Begin
C[i] := 0; // Счетчик = 0 (еще не считали)
A[i] := Random(1000) + 1; // Ai = [1..1000]
End;
// Считаем
For I := 1 To N Do
For J := 1 To N Do
If A[i] = A[J] Then Inc(C[i]);
// Здесь имеем кол-во вхождений Ai в последовательность.
// Сложность алгоритма O = n^2
end;
В принципе если какой-то элемент входит несколько раз, то мы получим несколько повторений в массиве счетчиков. Тут вопрос в том, как выводить. можно исключить повторы. Можно, конечно, переработать алгоритм так, что он сначала составит список уникальных элементов, а потом уже будет считать, но, думаю, это будет излишне.