Nombre Password [ Regístrate ]

El salto del caballo (OIE 5 - 2001)

 

Se dispone de una superficie rectangular "cuadriculada", es decir, formada por un entramado de posiciones o casillas (como ocurre, por ejemplo, con un tablero de ajedrez). Nos interesa buscar caminos dentro de esta superficie que cumplan ciertas condiciones, teniendo en cuenta que algunas de las casillas no pueden formar parte de dichos caminos (para entendernos, representan obstáculos en la superficie).

Objetivo

Dada una superficie rectangular de dimensión n x m, realizar un programa que la recorra partiendo de una casilla inicial y llegando a una casilla final según las reglas siguientes:

  • Todas las casillas deberán ser visitadas excepto las casillas marcadas como no visitables.
  • No se podrá visitar más de una vez cada casilla.
  • El salto de una casilla a otra deberá realizarse siguiendo las reglas de movimiento del caballo de ajedrez. Esto es, desde una casilla sólo se podrá avanzar a aquellas resultantes de avanzar una posición en línea recta y otra en diagonal en la misma dirección. El siguiente esquema muestra las casillas accesibles (con una cruz) desde la casilla A:

El programa deberá calcular la secuencia de casillas visitadas desde la inicial hasta la final. En caso que no exista ninguna solución, el programa debe detectar esta situación e informar.

Entrada

La entrada del programa consiste en una secuencia de líneas, que residen en un archivo de texto (ASCII) con nombre CAB.DAT, que tendrá el siguiente formato:

  • La primera línea contiene la dimensión de la superficie, es decir, el número n de columnas y el número m de filas.
  • La segunda línea contiene la posición inicial y la posición final, cada posición siendo dos enteros, la columna y la fila respectivamente. Podéis suponer que las dos posiciones están dentro de los límites de la superficie.
  • A continuación, m líneas más. Cada línea representa una fila de la superficie, y contiene n caracteres, uno por columna. Cada uno de estos caracteres puede ser 'V' o 'N', dependiendo de si la posición correspondiente es visitable o no. Los caracteres aparecen separados por un único carácter "espacio".

A efectos de numeración, debe considerarse que las filas van de 1 a m y las columnas de 1 a n.

Salida

La salida del programa ha de grabarse en un archivo de texto (ASCII) con nombre CAB.RES, que contendrá una línea por cada posición que forme parte del camino encontrado como solución que cumpla las condiciones dadas en el enunciado. Cada posición es un par de enteros: la columna y la fila. La primera posición de la solución será la posición inicial, y la última la posición final.

Si no hay ninguna solución, el fichero CAB.RES contendrá una única línea con el texto INSATISFACTIBLE. Si existe más de una solución, cualquiera de ellas se considera válida.

Ejemplo de entrada

5 4
1 1
1 4
V V V N N
V N V V V
V V V N V
V V V V V

Ejemplo de salida

1 1
2 3
4 4
5 2
3 1
1 2
2 4
3 2
5 3
3 4
1 3
2 1
4 2
5 4
3 3
1 4

 



© (2001-2008) ALGORITMIA.NET - Política de privacidad