Главная » Опишите алгоритм поиска трех последовательных...
18:30

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


Задание:

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

  1. const N=30;
  2. var a:array[1..N] of integer;
  3.     Max, Sum, i, k: integer;
  4. begin
  5.   for i:=1 to N do readln(A[i]);
  6.   Sum:=a[1]+a[2]+a[3];
  7.   Max:=Sum; k:=1;
  8.   for i:=2 to N-2 do begin
  9.     Sum:=Sum-a[i-1]+a[i+2];
  10.     if Sum >Max then begin
  11.       Max:=Sum;
  12.       k:=i
  13.     end
  14.   end;
  15.   for i:=k to k+2 do
  16.     writeln('A[',i,']=',a[i])
  17. end.

Похожие материалы:
Нашли ошибку на сайте? Напишите в комментариях!
Категория: Язык программирования: Паскаль | Просмотров: 85 | Добавил: Ученик | Рейтинг: 5.0/1