64,654
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main(){
string b;
int m;
cin>>m;
for(int i=0 ; i!=m ; i++ ){
cin>>b;
bool pipei(string &,int,int );
if(pipei(b,0,b.size()-1 ))
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
bool pipei(string & b,int h,int t ){
map<char,int> k;
k['[']=0;
k[']']=0;
k['(']=0;
k[')']=0;
map<char,int> p;
p['[']=']';
p[']']='[';
p['(']=')';
p[')']='(';
if(t==h+1 && p[b[h]]==b[t] || h>t )
return 1;
if(t==h+1 && p[b[h]]!=b[t] || h==t )
return 0;
int a[4]={0};// [ ] ( )
int i=h;
for(;i<=t;i++){
k[b[i]]++;
if( k[p[b[h]]]==k[b[h]] ){
return pipei(b,i+1,t)&&pipei(b,h+1,i-1) ;
}
}
if(i==t+1)
return 0;
}
#include<iostream>
#include<string>
using namespace std;
#include <stack>
stack<char> S;
bool Pipei(string b)
{
while(!S.empty())S.pop();
int i;
for(i = 0; i < b.size(); i++)
{
if(b[i] == '(' || b[i] == '[')
S.push(b[i]);
else
{
if(S.empty())return 0;
char t = S.top();S.pop();
if(b[i] == ']' && t == '(')
return 0;
if(b[i] == ')' && t == '[')
return 0;
}
}
if(!S.empty())return 0;
return 1;
}
int main(){
string b;
int m;
cin>>m;
for(int i=0 ; i!=m ; i++ ){
cin>>b;
if(Pipei(b))
printf("Yes\n");
else
printf("No\n");
}
return 0;
}