Конспект лекций по программированию для начинающих. Гладков В.П. - 156 стр.

UptoLike

Составители: 

158
a[n+1]:=1; { дописали в массив фиктивный элемент для универсального
определения окончания последовательности рядом стоящих нулей }
i:=1;
while i<n+1 do
begin if a[i]=0
then begin s:=1; {первый нуль найден!}
j1:=i; {запомнили начало последовательности нулей}
i:=i+1;
while a[i]=0 do
begin s:=s+1;
i:=i+1
end;
if m<s then begin m:=s;j:=j1 end;
end;
i:=i+1
end;
write('максимальное количество нулей, следующих подряд ',m,' ',j).
Четвертый вариант решения относится к третьему классу задач на массивы, так
как последовательность нулей можно рассматривать как подмассив. О методах
решения таких
задач рассказывается дальше.
Пример 11.13. Подсчитать максимальное количество следующих подряд
совпадающих элементов.
Решение. Например, в массиве A={1,2,2,3,3,3,4,4,4,4} больше всего четверок.
Начинается эта последовательность с 7-го элемента. В массиве B = {4, 2, 4, 4, 3, 4,
4, 4, 5, 4, 4} также больше всего четверок. Наиболее длинная последовательность
из подряд идущих четверок содержит их 3 штуки и начинается с 6-го элемента.
Данная задача очень похожа на предыдущую, поэтому для ее решения можно
использовать те же методы. Для
проверки совпадения двух соседних элементов
массива можно использовать условие a[i-1]=a[i]. Вариант решения, основанный на
подходе варианта 4 примера 11.12, приводится ниже:
m:=0;
j:=0;
a[n+1]:=a[n]+1; {нужно, чтобы фиктивный элемент не совпал с последним}
i:=1;
while i<n+1 do
begin
s:=1; { считаем, что a[i] является первым элементом интересующей нас
последовательности }
j1:=i; {запомнили номер ее начала}
i:=i+1;
while a[i-1]=a[i] do {проверяем, совпадают ли соседние элементы}
begin s:=s+1;
i:=i+1
end;
if m<s then begin m:=s;j:=j1 end; {проверка на максимум}
end;
                                       158

    a[n+1]:=1; { дописали в массив фиктивный элемент для универсального
               определения окончания последовательности рядом стоящих нулей }
    i:=1;
    while i