和上午做的某一題類似,比那一題還簡單點(diǎn)。不過我卻犯了同樣的錯(cuò)誤!
最終成功的條件不僅是沒有遇到匹配失誤,棧還必須為空!
以下是我的代碼:
#include<iostream>
#include<stack>
#include<string>
#include<cstdio>
using namespace std;
int main()
{
/*
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
//*/
int n;
cin>>n;
cin.get();
for(int i=1;i<=n;i++)
{
string t;
getline(cin,t);
stack<char> s;
bool fail(false);
for(int j=0;j<t.size();j++)
if(t[j]=='(' || t[j]=='[')
s.push(t[j]);
else if(t[j]==')')
{
if(s.empty() || s.top()!='(')
{
fail=true;
break;
}
else
s.pop();
}
else if(t[j]==']')
{
if(s.empty() || s.top()!='[')
{
fail=true;
break;
}
else
s.pop();
}
if(!fail && s.empty())
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}
posted on 2011-04-14 18:58
lee1r 閱讀(763)
評論(0) 編輯 收藏 引用 所屬分類:
題目分類:數(shù)據(jù)結(jié)構(gòu)