分治法——最大子段和问题

71 阅读1分钟
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int count;
    int a[100];
    int b[100];
    int i;
    int maxsum;
    cin >> count;
    for (i = 0; i < count; i++)
        cin >> a[i];
    b[0] = a[0];
    maxsum = b[0];
    for (i = 1; i < count; i++)
    {
        b[i] = max(b[i - 1] + a[i], a[i]);
        if (b[i] > maxsum)
            maxsum = b[i];
    }
    cout << maxsum;
    return 0;
}