題目連結: 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"; | |
} | |
} |