Найти отрезок из 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 элементов, сумма которых максимальна.
- Создаются три переменные:
—
i
— счётчик, который будет использоваться в двух циклах; —max
— переменная для хранения текущей суммы максимального отрезка; —i_max
— переменная для хранения индекса начала максимального отрезка. - В первой части кода суммируются все 10 элементов массива
a
, начиная с индекса 0. Результат сохраняется в переменнойmax
. - Во второй части кода в цикле суммируются элементы массива
a
, начиная с индекса 1 и заканчивая 190 (так как индексы в C начинаются с 0). В каждой итерации к сумме добавляется разница между текущим элементом и предыдущим, что позволяетсдвигать
отрезок на один элемент вправо. Если полученная сумма больше текущей максимальной, то обновляются значения переменныхmax
иi_max
. - В конце выводятся все 10 элементов максимального отрезка.
Примечание: данный код не проверяет, что входной массив
a
содержит хотя бы 10 элементов. Если в массиве меньше 10 элементов, то вывод будет некорректным.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д