首页 > 代码库 > UVa 673 (括号配对) Parentheses Balance
UVa 673 (括号配对) Parentheses Balance
本来是当做水题来做的,后来发现这道题略坑。
首先输入的字符串可能是空串,所以我用了gets函数,紧接着就被scanf("%d", &n)后面的换行符坑掉了。
于是乎再加一句getchar()
1 #include <cstdio> 2 #include <stack> 3 #include <cstring> 4 using namespace std; 5 6 const int maxn = 150; 7 char s[maxn]; 8 9 bool ok(const char& c1, const char& c2)10 {11 if(c1 == ‘(‘ && c2 == ‘)‘) return true;12 if(c1 == ‘[‘ && c2 == ‘]‘) return true;13 return false;14 }15 16 int main()17 {18 //freopen("in.txt", "r", stdin);19 20 int n;21 scanf("%d", &n); getchar();22 while(n--)23 {24 gets(s);25 stack<char> S;26 while(!S.empty()) S.pop();27 int l = strlen(s);28 if(l % 2 != 0)29 {30 puts("No");31 continue;32 }33 bool flag = true;34 for(int i = 0; i < l; ++i)35 {36 if(s[i] == ‘(‘ || s[i] == ‘[‘) S.push(s[i]);37 else38 {39 if(S.empty()) { flag = false; break; }40 else if(ok(S.top(), s[i])) S.pop();41 else { flag = false; break; }42 }43 }44 if(!S.empty()) flag = false;45 printf("%s\n", flag ? "Yes" : "No");46 }47 48 return 0;49 }
UVa 673 (括号配对) Parentheses Balance
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。