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.
Accept: 5ms, 动态规划
int maxSubArray(int A[], int n) {
int max = INT_MIN;
int i = 0;
for (; i < n && A[i]<=0; ++i) {
if (A[i] > max) {
max = A[i];
}
}
int sum = 0;
for (; i < n; ++i) {
if (A[i] + sum < 0) {
sum = 0;
continue;
}
sum += A[i];
if (sum > max) {
max = sum;
}
}
return max;
}
本文介绍了一种寻找具有最大和的连续子数组的算法实现。通过动态规划的方法,在给定数组中找到包含至少一个数的最大和子数组。例如,对于数组[-2,1,-3,4,-1,2,1,-5,4],子数组[4,-1,2,1]具有最大和为6。

被折叠的 条评论
为什么被折叠?



