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 );
}
{
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
Publicar un comentario