Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - fran774

#1
Java / Re: Problema laberinto java
4 Noviembre 2014, 10:04 AM
Hola

Porque nunca se me sale de la funcion reciproca. Quiero que cuando encuentra la salida 's' se salga .

Código (java) [Seleccionar]
import java.util.ArrayList;

public static boolean recorrer (char laberinto[][], int fil, int col){

int tam = laberinto.length;

//comprobar si es solucion
if(laberinto[fil][col]=='s'){
return true;
}

//recorrido:

//Derecha
if(col + 1 <= tam-1 && (laberinto[fil][col+1] == '0' || laberinto[fil][col+1]=='s')){
recorrer(laberinto,fil,col+1);
}

//Abajo
if(fil+1 <= tam-1 && (laberinto[fil+1][col] == '0' || laberinto[fil+1][col]=='s')){
recorrer(laberinto,fil+1,col);

}
//Arrriba
if(fil-1 >= 0 && (laberinto[fil-1][col] == '0' || laberinto[fil-1][col]=='s')){
recorrer(laberinto,fil-1,col);
}

//Izquierda
if(col-1 >=0 && (laberinto[fil][col-1] == '0' || laberinto[fil][col-1]=='s')){
recorrer(laberinto,fil,col-1);
}

return false;
}

}


Saludos
#2
Java / Problema laberinto java
4 Noviembre 2014, 09:55 AM
Hola

Me podrian ayudar con el algoritmo de este ejercicio que nose como hacerlo.


Un laberinto viene dado por una matriz cuadrada de tamaño nxn en la que cada posición puede ser un 0, un 1 o un asterisco. Un 1 significa que el camino está bloqueado, un 0 significa que el camino está abierto y un asterisco significa que el camino está abierto y además ganamos premio. En un laberinto puede haber como máximo un asterisco pero no es obligatorio que lo haya. En el laberinto se puede avanzar en cualquier dirección (horizontal, vertical y diagonal), siempre que el camino no esté bloqueado, a una posición vecina. Se pide un programa que comenzando en la posición (1,1) de la matriz (esquina superior izquierda), las filas y columnas comienzan a numerarse en 1, intente encontrar un camino a la posición (n,n), (esquina inferior derecha) .

El programa tomará como entrada un entero n en una línea y a continuación la matriz del laberinto dada en n líneas cada una con n valores binarios seguidos. Una de esas posiciones puede ser un asterisco; n será un entero positivo almacenable en un int, y devolverá la cadena "SI, CON PREMIO" si hay un camino directo (sin recorrer dos veces una misma posición) posible en el laberinto de salida que pasa por una posición con premio, "SI, SIN PREMIO" si hay algún camino en el laberinto de salida pero ninguno de los existentes pasa por una casilla con premio y "NO" sino hay camino posible de salida del laberinto. Cada salida terminará con un final de línea.

Ejemplo

Entrada

3

010

000

010

Salida

"SI, SIN PREMIO"


Saludos