* 最大子串和:
* 給定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;
}