fbpx

Problema #848 – Paranteze1 – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Se dau n șiruri de paranteze rotunde. Să se stabilească, despre fiecare șir, dacă este corect parantezat – adică dacă parantezele se închid corect.

Un șir de paranteze S rotunde este corect parantezat dacă:

  • S este șirul vid, sau
  • S = (T) și T este corect parantezat, sau
  • S = AB, iar A și B sunt corect parantezate.

Date de intrare

Fișierul de intrare paranteze1.in conține pe prima linie numărul n, pe următoarele n linii câte un șir de paranteze rotunde.

Date de ieșire

Fișierul de ieșire paranteze1.out va conține n linii: fiecare linie va conține valoarea 1, dacă șirul corespunzător de paranteze este corect parantezat și 0 în caz contrar.

Restricții și precizări

  • 1 ≤ n ≤ 100
  • fiecare șir va avea cel mult 255 de paranteze

Exemplu

paranteze1.in

4
(())
)(()
()((()())())
()(

paranteze1.out

1
0
1
0
#include <bits/stdc++.h>

using namespace std;

ifstream fin("paranteze1.in");
ofstream fout("paranteze1.out");

int main()
{
    int n , k = 0;
    char sir[300];
    int ok=0;
    fin >> n;
    for(int i = 0 ; i < n ; ++i)
    {
        fin >> sir;
        k=0;
        ok=1;
        for(int j = 0 ; j < strlen(sir) && ok ; ++j)
            if(sir[j]=='(')
                k++;
            else if(sir[j]==')' && k==0)
                ok=0;
            else
                k--;
        if(ok && k==0)
            fout << 1 << endl;
        else
            fout << 0 << endl;            
    }
    return 0;
}
Comentarii

S-ar putea sa iti placa