int mystery(int A[], int l, int h) {
if (h == l)
return A[l];
else {
int m = (l + h) / 2;
int left = mystery(A, l, m);
int right = mystery(A, m + 1, h);
int X = f(A, l, m, h);
if (left >= right && left >= X)
return left;
else if (right >= left && right >= X)
return right;
else
return X;
}
}
int f(int A[], int l, int m, int h) {
int SL = -10000, SR = -10000;
int t = 0, i, j;
for (i = m; i >= l; i--) {
t = t + A[i];
if (t > SL) SL = t;
}
t = 0;
for (j = m + 1; j <= h; j++) {
t = t + A[j];
if (t > SR) SR = t;
}
return SL + SR;
}
B dizisi [1, -4, 3, 4, -2, 6, -5, 2] değerlerini içeren 8 elemanlı bir dizi olduğunda, mystery(B, 0, 7) çağrısı hangi değeri döndürür?
Cevapla