ayuda memoria, el algoritmo de progra II de encontrar todos los caminos en un laberinto de np filas

    public void llenarCaminos3()
    {
        Posicion posAux = new Posicion( elCamino.getInicio().getI(), elCamino.getInicio().getJ() );
        Stack<Posicion> pilaPosiciones = new Stack< Posicion >();
        Stack< Camino > todosLosCaminos= new Stack< Camino >();       
   
        int idCamino = 0;
        int index = 0;
       
        elMapa.put( posAux.getI(), posAux.getJ(), idCamino);
        pilaPosiciones.push( new Posicion( posAux.getI(), posAux.getJ() ) );
           
        do
        {
            setDir( posAux );
           
            // proceso una posicion no expandible
            if( getDir() == Dir.NINGUNA )
            {                   
                todosLosCaminos.push( new Camino( elCamino.getInicio(), pilaPosiciones.peek() ) );
                todosLosCaminos.peek().copy( index, elCamino );
               
                while( getDir() == Dir.NINGUNA )
                {
                    pilaPosiciones.pop();
                    elCamino.popDireccion();
                                       
                    posAux.setI( pilaPosiciones.peek().getI() );
                    posAux.setJ( pilaPosiciones.peek().getJ() );
                   
                    setDir( posAux );
                }
               
                elCamino.getInicio().setI( posAux.getI() );
                elCamino.getInicio().setJ( posAux.getJ() );
               
                index = index( pilaPosiciones, posAux );
            }
            // proceso una posicion expandible
            else
            {   
                incrementarPosicion( posAux );
               
                pilaPosiciones.push( new Posicion( posAux.getI(), posAux.getJ() ) );
                elCamino.pushDireccion( getDir() );   
               
                idCamino++;
                elMapa.put( posAux.getI(), posAux.getJ(), idCamino);
            }   
           
            // salva la ultima posicion expandida
            if( elMapa.getPlacesAvailable() == 0 )
            {
                todosLosCaminos.push( new Camino( elCamino.getInicio(), pilaPosiciones.peek() ) );
                todosLosCaminos.peek().copy( index, elCamino );
            }
           
        }while( elMapa.getPlacesAvailable() != 0 );
       
        // muestra todos los caminos considerados
        mostrarTodosLosCaminos( todosLosCaminos );
    }

Comentarios

Entradas populares de este blog

El juego del ahorcado, escrito en assembler i8086

Una posible implementacion en modo texto de una sopa de letras con python ( 2013 )

Mezcla dos vectores ordendos en un tercero