Cerința
Se dă un șir de paranteze rotunde care se închid corect (corect parantezat). Să se determine adâncimea parantezării.
Pentru un șir de paranteze închise corect S
, adâncimea parantezării, D(S)
este definită astfel:
- dacă șirul
S
este vid,D(S)=0
- dacă
S=(T)
, undeT
este un șir de paranteze corect,D(S)=1+D(T)
- dacă
S=AB
, undeA
șiB
sunt șiruri de paranteze corecte,D(S)=max{D(A),D(B)}
Date de intrare
Fișierul de intrare paranteze2.in
conține pe prima un șir de paranteze rotunde, corect parantezat.
Date de ieșire
Fișierul de ieșire paranteze2.out
va conține pe prima linie un număr M
, reprezentând adâncimea parantezării.
Restricții și precizări
- șirul va conține cel mult
254
de paranteze
Exemplu
paranteze2.in
()((()())())
paranteze2.out
3
#include <bits/stdc++.h> using namespace std; ifstream cin("paranteze2.in"); ofstream cout("paranteze2.out"); int main() { char ch[300]; cin >> ch; int v[300]; int i = 0; int var=0; while(ch[i]!='\0') { if(ch[i]=='(') var++ , v[i]=var; else v[i]=var , var--; i++; } int max=0; for(int j = 0 ; j < i ; ++j) if(v[j]>max) max=v[j]; cout << max; return 0; }