题目描述:例如{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。
class Solution {
public:
int FindGreatestSumOfSubArray(vector<int> array)
{
if (array.size() == 0)
return 0;
vector<int> v;
int i;
for (i = 0; i < array.size(); i++)
{
v.push_back(0);
v.push_back(array[i]);
}
v.push_back(0);
int r;//以点i为中心的子序列的半径
int s;//以点i为中心的子序列的和
int mx1;//以点i为中心的子序列的和的最大值
int mx2 = INT_MIN;//所有子序列的和的最大值
for (i = 0; i < v.size(); i++)
{
if (i % 2)
{
s = mx1 = v[i];
for (r = 1; i - r >= 0 && i + r < v.size(); r++)
{
s += v[i - r] + v[i + r];
mx1 = max(s, mx1);
}
mx2 = max(mx1, mx2);
}
}
return mx2;
}
};