10
« en: 27 de Febrero 2013, 17:21 »
Tengo una duda en java en cuanto a bucles anidados. Expongo en problema y seguro que debe de ser sencillo, pero yo no logro averiguar como funciona. se trata del ejemplo de subsecuencia de suma máxima. Un algoritmo que busca la máxima suma consecutiva.
Uno de los algoritmos con eficiencia N cubo.
public stactic int subsecuenciaSumaMaxima ( int [] a)
{
int sumaMax = 0;
for( int i = 0; i < a.length; i++) lo tengo claro recorre el vector "a"
for( int j = i; j < a.length; j++) por lo que yo entiendo vuelve a recorrer el vector.
{
int sumaActual = 0;
for (int k = i; k <= j; k++) coge k el valor de i y va hasta el valor de j y luego el valor de k lo utiliza como posición de vector.
sumaActual += a[k];
if ( sumaActual < sumaMax)
{
sumMax = sumaActual;
secIni = i;
secFin = j;
}
}
return sumaMax;
}
Mi duda es sobre como funciona el anudamiento. En el primer for, coge la i el valor 0. Pasa al segundo vector y la j debe de coger el valor 0 que tiene la i. en el último for la k coge el valor de i que es 0 y lo compara con el valor de j que debe de ser 0. Por lo que no entiendo muy bien como funciona este algoritmo. Si alguien me pudiera explicar como funcionan los anidamiéntos se lo agradecería porque es donde creo que fallo que no se como funcionan, porque el algoritmo es correcto.