Nombre Password [ Regístrate ]

Caminos (OIE 1 - 1997)

 

Sea un tablero de dimensiones MxN, 1<=M<=9, 1<=N<=9, tal que cada casilla contenga una letra mayúscula. La casilla que está en la fila m y la columna n la identificamos mediante (m,n). Dos casillas diferentes (mi,ni) y (mj,nj) son adyacentes si se cumple:
- para la primera componente, |mi-mj|<=1 o |mi-mj|=M-1, y
- para la segunda componente, |ni-nj|<=1 o |ni-nj|=N-1.
Es decir, son adyacentes todas aquellas casillas que rodean a una dada, considerando que en el tablero como si la última fila estuviera unida a la primera, y lo mismo para las columnas. En el dibujo siguiente marcamos con un asterisco las casillas adyacentes a las casillas (2,3) (a la izquierda) y (1,1) (a la derecha) en un tablero 4x4:


    . * * *     . * . *
    . * . *     * * . *
    . * * *     . . . .
    . . . .     * * . *


Dada una palabra de k letras mayúsculas A=a1 a2 ... ak, k>=1, decimos que A está contenida en el tablero si se cumple que:
- existe una casilla (m1,n1) que contiene la letra a1,
- para cada letra ai+1, 1<=i<k, existe una casilla (mi+1,ni+1) que contiene ai+1 cumpliéndose que (mi,ni) y (mi+1,ni+1) son casillas adyacentes en el tablero, y
- no existen dos casillas (mi,ni) y (mj,nj) iguales, 1<=i, j<=k.
A la secuencia de casillas (m1,n1), ..., (mk,nk) la llamamos el camino de A en el tablero.

Así, dado el tablero 4x4 de la figura siguiente, las cadenas "SOLA", "HOLA" y "ADIOS" están contenidas en él, pero no sucede lo mismo con "GOZA", "HORA" ni "HALA".


S H A Z
I O L G
E Z E F
O H D I


En el caso de "SOLA", las casillas que forman su camino son (1,1), (2,2), (2,3) y (1,3). Para "HOLA", son (1,2), (2,2), (2,3) y (1,3). Para "ADIOS", el camino es (1,3), (4,3), (4,4), (4,1) y (1,1).

Dado un tablero de las características anteriormente descritas y una palabra A compuesta por letras mayúsculas, se pide calcular el camino de A. Al construir el programa, podéis suponer que A está contenida en el tablero y que existe un único camino para ella.

Entrada

Residente en el fichero de caracteres "CAMI.DAT":
- Línea 1: valores de M y N (un carácter del '1' al '9') separados por un único blanco
- Líneas de la 2 a la M+1 (la línea k representa la fila k-1 del tablero): N caracteres, representando el contenido de la línea correspondiente del tablero
- Línea M+2: p caracteres, M*N>=p>=1, que representa la palabra a tratar.

Salida

A guardar en el fichero de caracteres "CAMI.OUT":
p líneas (una para cada letra de la palabra a tratar), siendo el contenido de la línea k igual a la casilla que aparece en posición k dentro del camino de la palabra, de esta forma:
carácter del '1' al '9' - blanco - carácter del '1' al '9'

Ejemplo de entrada

4 4
SHAZ
IOLG
EZEF
OHDI
SOLA

Ejemplo de salida

1 1
2 2
2 3
1 3



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