Hipotesis
v
Problema:
– Se trata de encontrar una sucesión de movimientos “legales” de un caballo de ajedrez de forma que éstepueda visitar todos y cada uno de los escaques (cuadros) de un tablero sin repetir ninguno. 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
El recorrido del caballo de ajedrez– Movimientos “legales”:
6 5 4 3 2 7 8 1
variables dx,dy:vector[1..8] de entero variables dx,dy:vector[1..8] de entero ... ... dx:=[2,1,-1,-2,-2,-1,1,2]dx:=[2,1,-1,-2,-2,-1,1,2] dy:=[1,2,2,1,-1,-2,-2,-1] dy:=[1,2,2,1,-1,-2,-2,-1] – Estructura de datos: matriz de naturales u inicialmente: todos cero u al terminar: cadacomponente guarda el número de orden en que se visitó el escaque correspondiente variable variable tab:vector[1..n,1..n] de entero tab:vector[1..n,1..n] de enteroEl recorrido del caballo de ajedrez
algoritmo ensaya(ent i,x,y:entero; algoritmo ensaya(ent i,x,y:entero; sal éxito:booleano) sal éxito:booleano)
{Ensaya elmovimiento al i-ésimo escaque desde {Ensaya el movimiento al i-ésimo escaque desde el x,y. Si el movimiento es posible y tras él se el x,y. Si el movimiento esposible y tras él se puede seguir moviendo hasta encontrar la solución puede seguir moviendo hasta encontrar la solución entonces éxito devuelve verdad, si nofalso.} entonces éxito devuelve verdad, si no falso.}
variables k,u,v:entero variables k,u,v:entero principio principio k:=0; k:=0; repetir {se ensaya con los 88mov. posibles} repetir {se ensaya con los mov. posibles} k:=k+1; éxito:=falso; k:=k+1; éxito:=falso; u:=x+dx[k]; v:=y+dy[k]; u:=x+dx[k]; v:=y+dy[k]; si (1
Regístrate para leer el documento completo.