题目:对于一个有正有负的整数数组,找出总和最大的连续数列,包括其最大连续数列和,起始和终止位置下标
给定一个int数组A和数组大小n,请返回最大的连续数列的和。保证n的大小小于等于3000。
void MAXsum(vector<int> data, int length)
{
int Cursum = 0, Maxsum = 0;
int start = 0, end = 0;
for (int i = 0; i < length; i++)
{
Cursum += data[i];
if (Cursum < 0)
Cursum = 0;
if (Cursum > Maxsum)
{
Maxsum = Cursum;
end = i;
}
}
if (Maxsum == 0)
{
Maxsum = data[0];
start = end = 0;
for (int i = 1; i < length; i++)
if (data[i] > Maxsum)
{
Maxsum = data[i];
start = end = i;
}
}
else
{
int sum = 0;
int j = end;
for (; j >= 0; j--)
{
sum += data[j];
if (sum == Maxsum)
{
start = j;
break;
}
}
}
cout << Maxsum << " " << start << " " << end << endl;
}