#include<bits/stdc++.h>
using namespace std;
int maxsum(int* A, int x, int y) {
if(y == x+1) return A[x];
int m = (x + y)/2;
int maxs = max(maxsum(A, x, m), maxsum(A, m, y));
int v, L, R;
v = 0; L = A[m-1];
for(int i = m-1; i >= x; i--) L = max(L, v += A[i]);
v = 0; R = A[m];
for(int i = m; i < y; i++) R = max(R, v += A[i]);
return max(maxs, L+R);
}
int main() {
int b[9] = {1, -1, 3, 4, 5, -10, 11, -4, 5};
cout << maxsum(b, 0, 9) << endl;
return 0;
}
总之:递归 首先写好边界,递归语句根据具体问题具体分析 !!!!!