标签:
思路:if ,else if,else三者之间的关系。。我当时else if换成if就不对,最后发现了,如果输入[],最后q.pop()。栈为空,如果是if的话,就输出No了。。这一点区别要注意。。
#include<iostream> #include<stack> #include<string.h> using namespace std; int main() { int n,len,i; stack<char>q; char s[10000]; cin>>n; while(n--) { int flag=1; while(!q.empty()) q.pop(); cin>>s; len=strlen(s); for(i=0;i<len;i++) { if(s[i]=='['||s[i]=='(') q.push(s[i]); if(s[i]==')') { if(!q.empty() && q.top()=='(') q.pop(); else if(!q.empty() && q.top()!='(' ||q.empty()) { flag=0; cout<<"No"<<endl; break; } } if(s[i]==']') { if(!q.empty() && q.top()=='[')// [] q.pop(); else if(!q.empty() && q.top()!='[' ||q.empty()) { flag=0; cout<<"No"<<endl; //([[]()]) break; } } } if(q.empty() && flag==1)// ()) cout<<"Yes"<<endl; if(!q.empty() &&flag==1) // (() cout<<"No"<<endl; } return 0; }
标签:
原文地址:http://blog.csdn.net/zuguodexiaoguoabc/article/details/43983747