题目:对于一个有正有负的整数数组,找出总和最大的连续数列,包括其最大连续数列和,起始和终止位置下标
给定一个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; }