Fie X
multimea definita dupa urmatoarele reguli:
· sirul vid apartine multimii X
· daca A si B
apartin multimii X, atunci atat
sirul (A) cat si AB
apartin multimii X.
Elementele multimii X
sunt denumite expresii corect parantezate.
De exemplu, urmatoarele siruri sunt expresii corect parantezate:
()(())()
(()(()))
Urmatoarele expresii nu sunt corect parantezate:
(()))(()
())(()
Fie E
o expresie corect parantezata. Lungimea expresiei E
este egala cu numarul de paranteze din aceasta expresie. Adancimea expresiei
E (notata D(E))
este definita dupa cum urmeaza:
D(E)=0, daca E este vida
D(E)=D(A)+1, daca E = (A), si A este din X
D(E)=max(D(A),D(B)), daca E = AB, si A, B sunt din X
Cerinta
Scrieti un program care sa
determine numarul de expresii corect parantezate de lungime n
si adancime d.
Date de intrare
Fisierul de intrare expresii.in
contine o singura linie pe care se afla doua numere naturale n
d, separate printr-un spatiu, avand semnificatia din enunt.
Date de iesire
Fisierul de iesire expresii.out
va contine un singur numar natural reprezentand numarul de expresii corect parantezate
de lungime n si adancime d.
Restrictii
1<n<39
0<d<20
Exemple
expresii.in
expresii.out
Explicatie
6 2
3
Cele 3 expresii corect
parantezate de lungime 6 si adancime 2 sunt:
(())()
()(())
(()())