| Цитата(volvo877 @ 8.1.2005, 13:21) | | Очень странное задание, потому что если длина не ограничена, то цепочкой с максимальной суммой будет весь массив... |
А если массив такой {1, 2, -100, 3, 4}? Тогда цепочкой с максимальной суммой будет 3, 4. Вот такой вариант:| Код | #include <iostream.h> #include <iomanip.h> #define SIZE 10
void main() { int ar[] = {5, -5, 8, -2, 9, -4, 8, -3, 3, -99}; int sum = 0; int max = 0; int iBeg = 0; int iEnd = 0; int iFirst = 0; for(int i = 0; i < SIZE; i++) { sum += ar[i]; if(sum <= 0) { sum = 0; iFirst = i + 1; } else if(sum > max) { max = sum; iBeg = iFirst; iEnd = i; } }
cout << "Index :"; for(i = 0; i < SIZE; i++) cout << setw(4) << i;
cout << "\nArray :"; for(i = 0; i < SIZE; i++) cout << setw(4) << ar[i];
cout << "\nMySeq :"; for(i = 0; i <= iEnd; i++) i < iBeg ? (cout << setw(4) << ' ') : (cout << setw(4) << ar[i]);
cout << "\n\nMaxSum: " << max << "\nIndBeg: " << iBeg << "\nIndEnd: " << iEnd << endl; } |
|