Найти отрезок из 10 элементов, сумма которых максимальная - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Размер масива 200 Диапазон значений 0-100

Решение задачи: «Найти отрезок из 10 элементов, сумма которых максимальная»

textual
Листинг программы
int i, max=0, i_max=0, tmp;
for(i=0; i<10; i++)
    max+=a[i];
tmp=max;
for(i=1; i<191; i++)
{
    tmp+=a[i+9]-a[i-1];
    if(tmp>max)
    {
        max=tmp; i_max=i;
    }   
}
printf("Res:\n");
for(i=0; i<10; i++)
    printf("%d ", a[i]);

Объяснение кода листинга программы

В этом коде ищется отрезок из 10 элементов, сумма которых максимальна.

  1. Создаются три переменные: — i — счётчик, который будет использоваться в двух циклах; — max — переменная для хранения текущей суммы максимального отрезка; — i_max — переменная для хранения индекса начала максимального отрезка.
  2. В первой части кода суммируются все 10 элементов массива a, начиная с индекса 0. Результат сохраняется в переменной max.
  3. Во второй части кода в цикле суммируются элементы массива a, начиная с индекса 1 и заканчивая 190 (так как индексы в C начинаются с 0). В каждой итерации к сумме добавляется разница между текущим элементом и предыдущим, что позволяет сдвигать отрезок на один элемент вправо. Если полученная сумма больше текущей максимальной, то обновляются значения переменных max и i_max.
  4. В конце выводятся все 10 элементов максимального отрезка. Примечание: данный код не проверяет, что входной массив a содержит хотя бы 10 элементов. Если в массиве меньше 10 элементов, то вывод будет некорректным.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.6 из 5
Похожие ответы