《算法导论》第4章分治策略
#include <bits/stdc++.h>
using namespace std;
/*
* 最大子数组
* */
const int inf = 1e9+7;
struct result{
int maxLeft = 0;
int maxRight = 0;
int sum = 0;
};
result findMaxCrossingSubarray(int A[], int low, int mid, int high){
int leftSum = -inf;
int sum = 0;
int maxLeft, maxRight;
for (int i = mid; i >= low; --i) {
sum = sum + A[i];
if(sum > leftSum){
leftSum = sum;
maxLeft = i;
}
}
int rightSum = -inf;
sum = 0;
for (int j = mid+1; j <= high; ++j) {
sum = sum + A[j];
if(sum > rightSum){
rightSum = sum;