UVa 673 - Parentheses Balance

简单的栈应用。一开始忽略了判断栈是否为空。

#include<iostream>
#include<string>
#include<stack>
#include<map>
using namespace std;
int n;
string s;
map<char,char>a;
int main(){
    a[')']='(';
    a[']']='[';
    cin>>n;
    cin.get();
    while(n--){
        stack<char>c;
        getline(cin,s);
        int i;
        for(i=0;i<s.length();i++){
            if(s[i]=='('||s[i]=='[') c.push(s[i]);
            else if(s[i]==')'||s[i]==']'){
                if(c.empty()) break;
                if(c.top()==a[s[i]]) c.pop();
                else break;
            }
            else continue;
        }
        if(i==(int)s.length()&&c.empty()) cout<<"Yes"<<endl;
        else cout<<"No"<<endl;
    }
    return 0;
}


你可能感兴趣的:(uva)