Sopa de letras II

Tiempo límite 3 s
Memoria límite 256 MB
Casos de prueba 8
Dificultad Difícil Algoritmos
Mostrar (4) BacktrackingDFSMatricesTrie
Enviar solución

Puntos: 20

Tipos de problema
Lenguajes permitidos
C, C++, Java, Python, Rust

Dada una grilla de letras y una lista de palabras distintas, encuentra todas las palabras que se pueden formar en la grilla: se empieza en cualquier celda y se avanza a celdas vecinas (arriba, abajo, izquierda o derecha), sin usar la misma celda dos veces en una palabra.

Entrada

La primera línea tiene \(R\) y \(C\) \((1 \le R, C \le 12)\). Siguen \(R\) líneas con \(C\) letras minúsculas cada una. Luego una línea con \(k\) \((1 \le k \le 3 \cdot 10^4)\) y otra con las \(k\) palabras, distintas y de entre \(1\) y \(12\) letras.

Salida

La primera línea tiene la cantidad de palabras encontradas. La segunda, las palabras en orden lexicográfico, separadas por espacios (vacía si no hay ninguna).

Ejemplo 1

Entrada

4 4
oaan
etae
ihkr
iflv
4
oath pea eat rain

Salida

2
eat oath

Ejemplo 2

Entrada

2 2
ab
cd
1
abcb

Salida

0

Comentarios

No hay comentarios por el momento.