Найти максимальную сумму подряд идущих N элементов массива - C (СИ)
Формулировка задачи:
Необходимо вывести максимальную сумму подряд идущих элементов массива. Вводятся такие данные:
1) количество элементов массива N,
2) сами элементы,
3) число подряд идущих эл-тов M.
Нужно определить максимальную сумму состоящую из М эл-тов. При этом Подскажите, пожалуйста, как сделать эту программу без функций? Заранее спасибо =)
ЗАПРЕЩАЕТСЯ обращаться к одному и тому же элементу массива более 2-х раз и запрещается создавать новые массивы и использовать функции
. вот что у меня получилось (с функцией):int summa (int *array, long size) { int j, f; f= array[0] for (j=1; j<size; j++) f= f + array[j]; return f; } /* ... */ max= summa(&a[0],m); for (i=1; i<n-m; i++){ x= summa(&a[i],m); if (x>max) max= x; /* ... */
Решение задачи: «Найти максимальную сумму подряд идущих N элементов массива»
textual
Листинг программы
#include <stdio.h> int main(int argc, char* argv[]) { int Arr[]={1,2,3,-3,4,5,6,7,-1,5}; int smax,s,i,j,m,n,k,i_beg; n=sizeof(Arr)/sizeof(int); printf("m="); scanf("%d",&m); i_beg=0; k=0; smax=0; for (i=0; i<m; i++) smax+=Arr[i]; s=smax; for (j=m; j<=n-m+2; j++) { s=s-Arr[k++]; s=s+Arr[j]; if (s > smax) { smax=s; i_beg=k; } } printf("i_beg=%d S=%d \n",i_beg,smax); return 0; }
Объяснение кода листинга программы
В этом коде:
- Объявлен массив Arr типа int, содержащий 10 целых чисел.
- В функции main() объявлены следующие переменные: smax - для хранения максимальной суммы; s - для промежуточных вычислений; i, j, m, n, k - для управления циклами. i_beg - для хранения начального индекса максимальной суммы.
- Переменная m инициализируется значением количества элементов массива Arr.
- Переменная i_beg инициализируется нулевым значением.
- Переменная smax инициализируется значением суммы первых m элементов массива Arr.
- Переменная s инициализируется значением переменной smax.
- В цикле вычисляются суммы различных подмассивов, начиная с элемента с индексом i_beg и заканчивая элементом с индексом n-m+2.
- Если сумма подмассива больше текущей максимальной суммы, то обновляются переменные smax, i_beg и s.
- Выводится значение переменной i_beg и значение переменной smax.
- Функция main() возвращает 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д