* 最大子串和:
* 给定int类型数组arr,求arr中子串和的最大值
* 思路:暴力法解决时间复杂度为O(N^2)
* 时间复杂度为O(N)的解法:前k个数的和如果为负数,就没有
* 叠加的必要,定会使结果更小。所以从k+1再作为起点累加
***********************************************************************/
#include <iostream>
#include <vector>
using namespace std;
int maxSubStrSum(vector<int> &arr)
{
int result;
int total = 0;
for (int i = 0; i < arr.size(); i++)
{
total += arr[i];
result = result < total ? total : result;
if (total < 0)
{
total = 0;
}
}
return result;
}
int main()
{
int a[6] = {1, -3, 5, -2, 3, 9};
vector<int> arr(a, a+6);
cout << maxSubStrSum(arr);
return 0;
}