标签:
思路: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