/ Материалы / Язык программирования: Паскаль / Опишите алгоритм поиска трех последовательных...

Опишите алгоритм поиска трех последовательных...

Задание:

Опишите на русском языке или одном из языков программирования алгоритм поиска трех последовательных элементов, сумма которых максимальна, в числовом массиве из 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.
 


Похожие материалы

avatar
Наверх