題目連結: https://zerojudge.tw/ShowProblem?problemid=b304

# 解題思路

如果堆疊是空的,就將元素疊上去,
否則,判斷是否可以最上方的相消,如果不行相消就將元素疊上

如果最後堆疊為空,就代表合法囉

# 程式碼

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n;
    string s;
    cin>>n&&cin.ignore();
    while(n--){
        stack <char> St;
        getline(cin,s);
        for(int i=0;i<s.size();i++){
            if(St.empty())
                St.push(s[i]);
            else
                if(St.top()=='('&&s[i]==')')
                    St.pop();
                else if(St.top()=='['&&s[i]==']')
                    St.pop();
                else
                    St.push(s[i]);
        }
        if(St.empty())
            cout<<"Yes\n";
        else
            cout<<"No\n";
    }
}
更新於 閱讀次數

用實際行動犒賞爆肝的我😀

Zrn Ye LinePay

LinePay