La resolución del problema se basa en un algoritmo "trial
and error", es decir, backtracking.
Al principio, se coloca un caballo en la posición inicial
y se almacena en la posición 1 del array Lista. A continuación
se coloca un caballo "hijo" en la primera dirección de las
ocho posibles y se almacena en la posición 2. Así se continúa
hasta llegar al número de posición igual al número de casillas
visitables (que se precalcula al leer la entrada).
Cuando no sea posible mover un caballo en la dirección
deseada se pasa a la siguiente dirección y cuando se agoten las 8 direcciones
posibles se produce la "vuelta atrás", se quita el caballo
en la posición n en la que se esté y se vuelve a la posición
n-1, donde se probará la siguiente dirección. En el caso en que
se agotaran las 8 direcciones posibles desde la primera casilla sería
el caso insatisfactible. Código Código fuente en C Código fuente en Pascal |