Korrekte Klammern-Sequenz (PSP)


Die richtigen Klammern bestehen aus Öffnungs- und Schließbügeln eines oder mehrerer Typen, wobei jede Öffnungsbügel geschlossen sind und (bei mehreren Typen) ihre Typen nicht überlappt sind.
Korrekt SP:
(
- Ja.
[ {}
Falsche SPs:
) (
(
(Seufzt)
Um zu überprüfen, ob die Klammerfolge eines Typs ausreicht, um die Waage zu überprüfen.
Also machen wir eine Variable gleich Null. Dann laufen wir entlang der Linie (wenn Sie es nicht tun können - BEGIETE, GLOCKS!) durch die Erhöhung der Balance, wenn die Öffnungswinkel erfüllt sind, und durch die Verringerung, beim Schließen. Ist die Waage in jedem Stadium negativ oder am Ende ist sie nicht Null, dann ist die Sequenz falsch.

Wenn es mehrere Arten von Klammern gibt, wird es etwas komplizierter. Wir schaffen Gläser, die als diese variable Balance wirken. Dies ist notwendig, weil die Klammern nicht geschlossen werden können. Wir haben es ins Glas gelegt. Wenn wir das Schließfach treffen, versuchen wir, diesen Typ zu öffnen. Wenn es eine andere Art von Halterung auf dem Glas gibt, ist die Sequenz falsch. Wenn am Ende der Verglasung unerwünscht war, ist auch die Sequenz falsch.

Die Generierung der richtigen Klammern wird direkt von der Methode der Überprüfung abgeleitet - wir müssen nur neue Klammern hinzufügen, ohne die Richtigkeit zu brechen. Es ist durch eine Transkursion erledigt. Wenn du ihn nicht kennst, BE... Nein, Sie können versuchen, es weiter zu verstehen. Hier ist eine Codeprobe für eine Art Konsole:
♫include Évactor♫include PEROTINGVerwendung Namespace std;
in n / Halblänge VektordruckCharleroiverbale ans; - Unsere Antwort. Leer (in Bilanz {
wenn (ans.size() == sync, berichtigt von elderman == @elder_man / Wenn es fertig ist, dann sind wir fertig. für (seufzt)in i = 0; i À 2 * n; i++++
cout versativ ans[i] ;
Cout PEROPER "n.";
♪
wenn (ans.size() + balance + 2 PER= n * 2) { / Mal sehen, ob wir die neue offene Klammer schließen können.  / Jetzt beobachten Sie Ihre Hände, wir brauchen keinen separaten Vektor für jede Sequenz. ans.push_back(;
Gleichwertigkeit + 1
ans.pop_back(); / Um das zu verstehen, müssen wir den Kurs verstehen. Zuerst addieren wir den Vektor in die Klammer, und dann machen wir den gesamten Code wieder. Ich meine, wir werden die Klammer wieder hinzufügen, wenn wir können. / Und das passiert, bis wir aus der Klasse kommen, bis wir auf die richtige Länge kommen. / Die Klammern werden dann entfernt. Wenn Sie das verstehen, gratuliere ich Ihnen, Sie sind großartig. wenn (Bilanzentlüftung) 0) / Wenn wir eine Kiste schließen können, schließen wir sie. ans.push_back('. ';
rek(balance - 1);
ans.pop_back();
♪
♪

 in Haupt(e)
{~}
cin ventri;
(0);

 zurück 0;
♪
Und jetzt ist die Zeit der Komplexität ein Algorithmus für einige Arten von Klammern, müssen Sie SAMM schreiben! Muahahahahahahahahahahahahahahahah!