Cerința
Se dau n
șiruri de paranteze rotunde sau pătrate. 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, sauS = (T)
șiT
este corect parantezat, sauS = [T]
șiT
este corect parantezat, sauS = AB
, iarA
șiB
sunt corect parantezate.
Date de intrare
Fișierul de intrare paranteze3.in
conține pe prima linie numărul n
, pe următoarele n
linii câte un șir de paranteze rotunde sau pătrate.
Date de ieșire
Fișierul de ieșire paranteze3.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
paranteze3.in
4 ()[] )([] ()[(()[])()] ([)]
paranteze3.out
1 0 1 0
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema Paranteze3:
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("paranteze3.in");
ofstream fout("paranteze3.out");
int n;
char s[256];
char stiva[256];
int main()
{
fin >> n;
for(int k = 1 ; k <= n ; k ++)
{
fin >> s;
int ok = 1;
int nivel = 0;
for(int i = 0 ; s[i] && ok ; i ++)
if(s[i] == '(')
stiva[++nivel]='(';
else
if(s[i] == '[')
stiva[++nivel]='[';
else
if(nivel > 0)
{
if(s[i] == ')')
if(stiva[nivel] == '(')
nivel --;
else
ok = 0;
else
if(stiva[nivel] == '[')
nivel --;
else
ok = 0;
}
else
ok = 0;
if(nivel > 0)
ok = 0;
fout << ok << "\n";
}
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #852 Paranteze3
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #852 Paranteze3 de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!