Жак Арсак - Программирование игр и головоломок
Введем четыре величины:
i — число рассмотренных членов последовательности,
lmax — максимальная длина равнинного участка для рассмотренных элементов,
llast — длина последнего равнинного участка для рассмотренных элементов,
xlast — последний рассмотренный элемент последовательности (он равен а[i]).
Теперь приведем без пояснений программу, которая вычисляет lmax ({a1, …, an}) по индукции.
i := 1; lmax := 1; llast := 1; xlast := a[1]
нц пока i < n
x := a[i + 1]
если x = xlast то llast := llast + 1
иначе llast := 1 кесли
если llast > lmax то lmax := llast кесли
xlast := x
i := i + 1
кц
вывод lmax
Подробнее об этой индуктивной методике можно прочитать в книге: А. Г. Кушниренко, Г. В. Лебедев. Программирование для математиков. — М.: Наука, 1988. — Примеч. ред.