Алгоритмы на С++
Решение задачи 5 главы 2
Отрезок последовательности целых чисел образует числа, идущие в ней подряд. Найдите номера чисел, которыми начинается и заканчивается отрезок с максимальной суммой, а также эту сумму.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
void itmathrepetitor_ru() { double smax=0, s=-1, startmax, endmax, start=-1, end; double a; bool flag=false; int n; cout<<"input n: "; cin>>n; for (int i=0; i<n; i++) { cout<<"input a["<<i+1<<"]: "; cin>>a; // www.itmathrepetitor.ru if (a<0) { if (start==-1 || (s<0 && smax<a)) { smax=a; s=smax-1; startmax=i; start=i; endmax=i; } else if (s>0 && smax<s) { smax=s; s=-1; startmax=start; start=-1; endmax=i-1; // www.itmathrepetitor.ru } } else if (a>0) { if (s<0) { s=a; start=i; } else { s+=a; } } } if (s>0 && s>smax) { startmax=start; smax=s; endmax=n-1; // www.itmathrepetitor.ru } cout<<"sum = "<<smax<<endl; cout<<"start = "<<startmax+1<<endl; cout<<"end = "<<endmax+1<<endl; } |