See More

// Source : https://oj.leetcode.com/problems/maximum-subarray/ // Author : Hao Chen // Date : 2014-06-20 /********************************************************************************** * * 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. * * More practice: * * If you have figured out the O(n) solution, try coding another solution using * the divide and conquer approach, which is more subtle. * * **********************************************************************************/ #include #include #include #define INT_MIN (-2147483647 - 1) int maxSubArray1(int A[], int n); int maxSubArray2(int A[], int n); int max(int x, int y){ return x>y?x:y; } int maxSubArray(int A[], int n) { if (random()%2){ return maxSubArray1(A, n); } return maxSubArray2(A, n); } int maxSubArray1(int A[], int n) { int *sum = new int[n]; sum[0] = A[0]; int m = A[0]; for (int i=1; i