Description:
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
For example, given the array [-2,1,-3,4,-1,2,1,-5,4]
,
the contiguous subarray [4,-1,2,1]
has the largest sum = 6
.
题目思考:
本题要求给定数组中连续子列的最大总和
Solution:
int maxSubArray(int A[], int n) {
if (n == 0)
return 0;
int max_ending_here = A[0];
int max_so_far = A[0];
for(int i = 1; i < n; ++i)
{
if (max_ending_here < 0)
// So far we get negative values, this part has to be dropped
max_ending_here = A[i];
else
// we can accept it, it could grow later
max_ending_here += A[i];
max_so_far = max(max_so_far, max_ending_here);
}
return max_so_far;
}