题意,括号匹配。
在给出的样例中,第二组数据,栈空之后不能再出栈!
#include <iostream>
#include <cstdio>
#include <cstring>
#include <stack>
using namespace std;
stack<char> kh;
int main()
{
int n;
cin>>n;
getchar();
while(n--)
{
while(!kh.empty())
kh.pop();
char s[130];
int error=0;
gets(s);
for(int i=0; i<strlen(s); i++)
{
if(s[i]=='('||s[i]=='[')
kh.push(s[i]);
else if(s[i]==')'||s[i]==']')
{
char flag;
if(s[i]==')')
flag='(';
else
flag='[';
if(!kh.empty()&&flag==kh.top())
kh.pop();
else
{
error=1;
break;
}
}
}
if(error)
cout<<"No"<<endl;
else if(!kh.empty())
cout<<"No"<<endl;
else
cout<<"Yes"<<endl;
}
return 0;
}