Задание:
Опишите на русском языке или одном из языков программирования алгоритм поиска трех последовательных элементов, сумма которых максимальна, в числовом массиве из 30 элементов.
Решение:
Введем целые переменные Sum, Max и k. В Sum будем хранить сумму трех последовательных элементов, начиная с текущего, а в Max – максимальную (на данный момент) из этих сумм, а в k – номер первого элемента в цепочке с максимальной суммой. Сначала запишем в Sum и в Max сумму первых трех элементов, а в переменную k – единицу. В цикле рассматриваем все элементы массива со второго до N-2. Для получения очередной суммы вычитаем из Sum предыдущий элемент и добавляем элемент, который следует за текущим через один (можно также просто сложить текущий элемент и два следующих). Сравниваем Sum со значением переменной Max; если Sum больше, то заносим это значение в переменную Max и запоминаем номер текущего элемента в переменной k. По окончании работы алгоритма переменная Max содержит максимальную сумму трех подряд идущих элементов массива, а переменная k указывает на начало цепочки, которая состоит из элементов с номерами k, k+1 и k+2
const N=30;
var a:array[1..N] of integer;
Max, Sum, i, k: integer;
begin
for i:=1 to N do readln(A[i]);
Sum:=a[1]+a[2]+a[3];
Max:=Sum; k:=1;
for i:=2 to N-2 do begin
Sum:=Sum-a[i-1]+a[i+2];
if Sum >Max then begin
Max:=Sum;
k:=i
end
end;
for i:=k to k+2 do
writeln('A[',i,']=',a[i])
end.