Donada la classe dicc que permet gestionar diccionaris on només hi guardem claus úniques usant tries implementats amb la tècnica d’arbres generals amb punters a primer fill i següent germà, 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