Zulässige Reihenfolge beim Herausnehmen aus dem Stapel (C-Sprache) C++

Ohne weitere Umschweife, hier ist der Titel

Es gibt einen leeren Stapel c und eine positive ganze Zahl n. 1, 2, 3, ..., n1, 2, 3, ... werden nacheinander in den Stapel geschoben und jederzeit während des Zeitraums herausgesprungen. Fragen Sie dann bei einer gegebenen Pop-Sequenz, ob es sich um eine legale Pop-Sequenz handelt.

Die Eingabevoraussetzungen sind

Die erste Zeile enthält eine Ganzzahl n (1 ≤ n ≤ 100), die die Anzahl der Ganzzahlen angibt, die auf den Stapel verschoben werden müssen.

Die zweite Zeile ist eine Anordnung von [1,n], die eine Pop-Sequenz darstellt, wobei Ganzzahlen durch Leerzeichen getrennt sind.

Die Ausgabe erfordert, dass die Ausgabe „Ja“ für Erfolg und „NEIN“ für Fehler lautet.

Hier sind einige Tipps:

Zunächst ist der Stapel leer, d. h []. Führen Sie als Nächstes die folgende Sequenz aus, um die Pop-Sequenz zu erhalten 3 2 4 1:

1.1In den Stapel schieben, zu diesem Zeitpunkt ist der Stapel [1];

2.2In den Stapel schieben, zu diesem Zeitpunkt ist der Stapel [1,2];

3.3In den Stapel schieben, zu diesem Zeitpunkt ist der Stapel [1,2,3];

4.3Öffnen Sie den Stapel. Zu diesem Zeitpunkt ist der Stapel [1,2];

5.2Öffnen Sie den Stapel. Zu diesem Zeitpunkt ist der Stapel [1];

6.4In den Stapel schieben, zu diesem Zeitpunkt ist der Stapel [1,4];

7.4Öffnen Sie den Stapel. Zu diesem Zeitpunkt ist der Stapel [1];

8.1Öffnen Sie den Stapel, zu diesem Zeitpunkt ist der Stapel []

Code wie folgt anzeigen:             

#include <iostream>
#include <stack>
using namespace std;

int main() {
    int n;
    cin >> n;
    stack<int> s;  
    int cur = 1;   
    for (int i = 0; i < n; i++) {
        int x;
        cin >> x;   
        while (s.empty() || s.top() != x) {  
            if (cur > n) { 
                cout << "No" << endl;
                return 0;
            }
            s.push(cur++);
        }
        s.pop();  
    }
    if (s.empty()) {  
        cout << "Yes" << endl;
    } else {
        cout << "No" << endl;
    }
    return 0;
}

                                            Das ist ungefähr die Situation      

Acho que você gosta

Origin blog.csdn.net/endofdestruction/article/details/132030048
Recomendado
Clasificación