ich konnte nicht den Fehler von diesen Code finden.Es gibt nur 2 Fehler in der Implementierung. hilf mir jemand, bitte
edit: Bitte Code-tags verwenden!
Code:
public static boolean LEFT = true ,
RIGHT = false;
public static int bmax(int[] F,int left, int right, boolean direction)
{
int maxSum = 0;
int curSum = 0;
if (direction = RIGHT)
{
for (int i = left; i < right; i++)
{
curSum += F[i];
maxSum = Math.max(maxSum, curSum);
}
}
else
{
for (int i = right; i > left; i--)
{
curSum += F[i];
maxSum = Math.max(maxSum, curSum);
}
}
return maxSum;
}
public static int maxTsum(int[] F, int left, int right)
{
if ( (right - left) < 1 )
{
return F[left];
}
else if ( (right -left) == 1 )
{
return Math.max(F[left], F[right]);
}
int index = left + (right - left)/2;
int maxTinA = maxTsum(F, left, index - 1);
int maxTinB = maxTsum(F, index, right);
int rmax = bmax(F, left, index - 1, LEFT);
int lmax = bmax(F, index, right, RIGHT);
return Math.max(maxTinA, Math.max(maxTinB, rmax +lmax));
}