int array[] = {-1, 4, -2, 5, -5, 2, -20, 6};
Si tuviera esa matriz, mi implementación del algoritmo kadane para encontrar el máximo subarreglo funciona:kadane algoritmo números negativos
int max_so_far = INT_MIN;
int max_ending_here = 0;
for (int i = 0; i < size; i++) {
max_ending_here = max(max_ending_here + array[i], 0);
max_so_far = max(max_ending_here, max_so_far);
}
printf("%d\n", max_so_far);
Sin embargo, si tengo una matriz de todos los negativos:
int array[]= {-10, -10, -10};
No funcionará, debería devolver -10, pero obtengo 0.
¿Cómo puedo hacer que funcione también para números negativos?
¡Gracias!
Tal vez se puede ampliar sobre por qué/cómo funciona esta solución, y por favor comente su código. –
Sobre todo, debe verificar que la matriz esté vacía o nula. Establezca el valor de max_ending_here como el primer número del valor de la matriz. A continuación, repita el inicio de la matriz desde el segundo número de la matriz. Si elige el máximo de (max_ending_here + array [i], array [i]). si la matriz son todos números negativos, la salida será el número negativo más grande. – flmAtVancl