Encontrar palabras.
El prefijo común más largo de dos palabras es la palabra más larga con la que ambas comienzan. Por ejemplo, el prefijo común más largo de las palabras "identidad" e "idealista" es "ide".
Una base de datos contiene palabras. El algoritmo para buscar una palabra de consulta
en la base de datos es primitivo. Compara la palabra
una por una con cada palabra de la base de datos. Se comparan dos palabras letra por letra hasta que se encuentra una letra en la que difieren o hasta que se llega al final de una de ellas (en ese momento se determina si las palabras son iguales o si una es más larga que la otra). Cuando el algoritmo encuentra la palabra
en la base de datos, finaliza.
El análisis del algoritmo muestra que el número de pasos necesarios para encontrar una palabra es igual al número de palabras con las que se compara
, más la suma de las longitudes de los prefijos comunes más largos de
y de cada una de las palabras con las que se comparó.
Escribe un programa que calcule el número de pasos que el algoritmo utiliza para encontrar cada una de las palabras de consulta.
Entrada
- La primera línea contiene un entero
, que representa el número de palabras en la base de datos.
- Cada una de las
líneas siguientes contiene una palabra de la base de datos. Las palabras se proporcionan en el orden en que el algoritmo las compara con una palabra de consulta. Todas las palabras de la base de datos serán distintas.
- La siguiente línea contiene un entero
, que representa el número de palabras que se buscan. Cada una de las
líneas siguientes contiene una palabra de consulta. Todas las palabras de entrada serán cadenas de menos de 30 letras minúsculas del alfabeto inglés.
Salida
Imprime un entero por línea para cada palabra de consulta, que indica el número de pasos que el algoritmo utiliza al buscar la palabra.
Restricciones
Ejemplo #1 de Entrada
5
hobotnica
robot
hobi
hobit
robi
4
robi
hobi
hobit
rakija
Ejemplo #1 de Salida
12
10
16
7
Ejemplo #2 de Entrada
8
majmunica
majmun
majka
malina
malinska
malo
maleni
malesnica
3
krampus
malnar
majmun
Ejemplo #2 de Salida
8
29
14
En el segundo ejemplo, el número de pasos para buscar la palabra "krampus" es 8 porque el algoritmo solo necesita comparar su primera letra con cada palabra de la base de datos. Al buscar la palabra "malnar", necesitamos tres pasos para cada una de las tres primeras palabras y cuatro pasos para cada una de las cinco restantes, para un total de 29 pasos.
Para encontrar la palabra "majmun" usamos un total de 14 pasos. Para la primera palabra de la base de datos, tenemos seis comparaciones exitosas y un paso en el que determinamos que la palabra "majmunica" es más larga que la palabra de consulta. Para la segunda palabra, también tenemos seis comparaciones exitosas y un paso final en el que se establece que las palabras son iguales. Tras encontrar la palabra, el algoritmo finaliza con gran satisfacción.
Comments