#include<iostream>
#include<numeric>
#include<algorithm>
using namespace std;
/*
maxSum[i] = max(maxSum[i-1], a[i], sum[j, i])
*/
int maxSumOfSubarray(int a[], int n)
{
int maxSum , t;
maxSum = t = a[0];
for( int i = 1; i < n ; i++ )
{
t = max(t + a[i], a[i]);
maxSum = max(t, maxSum);
}
return maxSum;
}
int main(int argc, char *argv[])
{
int a[6] = {1, -2, 3, 5,-3,2};
int b[6] = {0, -2, 3, 5 , -1, 2};
int c[6] = {-9, -2, -3, -5, -3};
cout << maxSumOfSubarray(a, 6) << endl;
cout << maxSumOfSubarray(b, 6) << endl;
cout << maxSumOfSubarray(c, 5) << endl;
return 0;
}
子数组最大和问题
最新推荐文章于 2023-12-11 12:22:17 发布