1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
#include<stack> using namespace std; stack<int> s;
bool (char a) { if(a=='('||a=='['||a=='{') return true; else return false; }
bool IsRight(char b) { if(b==')'||b==']'||b=='}') return true; return false; }
bool pMatch(char a, char b) { if(a=='('&&b==')') return true; else if(a=='['&&b==']') return true; else if(a=='{'&&b=='}') return true; return false; }
bool judge(char* str) { while(*str) { if(IsLeft(*str)) { s.push(*str); } else if(IsRight(*str)) { if(s.empty()==false&&pMatch(s.top(),*str)) { s.pop(); } else { return false; } } str++; } if(s.empty()==false) { return false; } return true; }
int main() { char str[100]; while(scanf("%s",str)!=EOF) { while(s.empty()==false) s.pop(); bool bMatch=judge(str); if(bMatch) printf("Paren Match!n"); else printf("Paren Unmatch!n"); } return 0; }
|
近期评论