Aquí tractem amb expressions regulars simplificades, les quals codifiquen paraules. En el que segueix, sigui una paraula no buida formada només amb lletres minúscules, sigui un dígit entre 1 i 9, i sigui una seqüència no buida d’expressions regulars. Una expressió regular pot ser:
[]
: codifica
còpies de
.
[]
: codifica
còpies de la concatenació de les codificacions de
,
…,
.
Diversos exemples:
1[hola] codifica hola.
3[hi] codifica hihihi.
1[1[hola]3[hi]] codifica
holahihihi.
2[1[hola]3[hi]] codifica
holahihihiholahihihi.
Com podeu veure als exemples d’entrada, aquesta definició recursiva
permet que hi hagi tants nivells com es vulgui de [ ...
].
L’entrada consisteix en diverses expressions regulars.
Escriviu la paraula codificada per cada expressió regular donada.
Si i són strings, i és un caràcter, aquestes operacions són vàlides:
s += t; // afegeix una copia de t a la dreta d's
s += c; // afegeix una copia de c a la dreta d's
La solució esperada és recursiva. El main() només
conté:
char c;
while (cin >> c) cout << expressio(c) << endl;
Autoria: Maria Blesa
Generació: 2026-01-25T12:05:56.654Z
© Jutge.org, 2006–2026.
https://jutge.org