码迷,mamicode.com
首页 > 其他好文 > 详细

UVa 673 (括号配对) Parentheses Balance

时间:2015-02-04 00:27:19      阅读:331      评论:0      收藏:0      [点我收藏+]

标签:

本来是当做水题来做的,后来发现这道题略坑。

首先输入的字符串可能是空串,所以我用了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             else
38             {
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

标签:

原文地址:http://www.cnblogs.com/AOQNRMGYXLMV/p/4271346.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!