Donada la classe dicc que permet gestionar diccionaris on només hi guardem claus úniques usant tries implementats amb la tècnica d’arbres ternaris de cerca (TST), cal implementar el mètode
Les claus són del tipus string i els símbols utilitzats per construir el trie són els chars de les claus. S’ha usat el char especial ’#’ per indicar la fi de la clau. Els símbols dels nodes germans estan ordenats de menor a major.
Cal enviar a jutge.org la següent especificació de la classe dicc i la implementació del mètode dins del mateix fitxer. La resta de mètodes públics i privats ja estan implementats.
Degut a que jutge.org només permet l’enviament d’un fitxer amb la solució del problema, en el mateix fitxer hi ha d’haver l’especificació de la classe i la implementació del mètode quantes_interval (el que normalment estarien separats en els fitxers .hpp i .cpp).
Per testejar la classe disposes d’un programa principal que insereix claus en un diccionari i després compta quantes hi ha en diferents intervals.
Entrada
L’entrada conté dos blocs separats per una línia amb 10 guions (———–). El primer bloc consisteix en una llista de strings: són les claus que tindrà el diccionari. El segon bloc consisteix en una llista de parelles de strings: Són els string inicial i final amb els que comptarem les claus que estan entremig.
Sortida
Per a cada parella de strings d’entrada del segon bloc, escriu una línia amb el nombre de claus que estan entre els dos strings, el text " claus entre " i desprès els dos string separats pel text " i ".
Observació
Només cal enviar la classe requerida i la implementació del mètode quantes_interval. Pots ampliar la classe amb mètodes privats. Segueix estrictament la definició de la classe de l’enunciat.
Per superar els jocs de prova privats, el mètode quantes_interval ha de visitar només els nodes del trie imprescindibles.
Pots utilitzar els mètodes i operadors de la classe string, per exemple:
Input
OCA ---------- OCA OCA
Output
1 claus entre OCA i OCA
Input
CASA CAS ---------- CAS CASA CAS CAS CASA CASA CASA CAS
Output
2 claus entre CAS i CASA 1 claus entre CAS i CAS 1 claus entre CASA i CASA 0 claus entre CASA i CAS
Input
DAU DIT AU AVI CASA COP CAP OU OLA UN EXTRA FUM FOC ILLA ALA ---------- ALA UN ALA ILLA CAP CAP CAP COP COP DAU ALA AU EXTRA FUM UN UN UN ALA COP CAP
Output
15 claus entre ALA i UN 12 claus entre ALA i ILLA 1 claus entre CAP i CAP 3 claus entre CAP i COP 2 claus entre COP i DAU 2 claus entre ALA i AU 3 claus entre EXTRA i FUM 1 claus entre UN i UN 0 claus entre UN i ALA 0 claus entre COP i CAP
Input
DAU DIT AU AVI CASA COP CAP CAPA OU OLA UN EXTRA FUM FOC ILLA ALA AL ---------- AL UN AL ILLA ALA UN CAP CAPA CAP CAP CAP COP COP DAU AL AL AL ALA AL AU ALA AU UN UN UN AL ALA AL
Output
17 claus entre AL i UN 14 claus entre AL i ILLA 16 claus entre ALA i UN 2 claus entre CAP i CAPA 1 claus entre CAP i CAP 4 claus entre CAP i COP 2 claus entre COP i DAU 1 claus entre AL i AL 2 claus entre AL i ALA 3 claus entre AL i AU 2 claus entre ALA i AU 1 claus entre UN i UN 0 claus entre UN i AL 0 claus entre ALA i AL