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

【洛谷 1944】

时间:2017-10-16 18:02:41      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:font   +=   top   连续子序列   har   长度   第一题   print   freopen   

  今天集训第一题就是它,只是换了一下输出,输出最长的美观的连续子序列的长度。

  刚开始做的时候,还想着这是栈的经典例题,然后我就默默地打了个队列(两个样例还过了一个),怕是石乐志了!!!!!陆陆续续调了一天!!!!!!这时候才想起来是栈。。。。。

  还有一点:别忘了判断栈是否已经为空!!!!!!

 1 #include <cstdio>
 2 #include <string>
 3 #include <stack>
 4 #include <iostream>
 5 
 6 std::string s;
 7 
 8 int ans, maxn;
 9 
10 void fs() {
11     std::stack<char> q;
12     int len = s.length();
13     for (int i = 0; i < len; ) {
14         while (s[i] == ( || s[i] == [ || s[i] == {) {
15             q.push(s[i++]);
16         }
17             
18         if (s[i] == )) {
19             if (!q.empty() && q.top() == () {                    // !!!!!判断是否栈空,为此我 RE 了 4 个点
20                 q.pop(), ans += 2, i++;
21                 if (maxn < ans) maxn = ans;
22             } else {
23                 while (s[i] == ) || s[i] == ] || s[i] == }) i++;
24                 while (!q.empty()) q.pop();
25                 ans = 0;
26             }
27         } else if (s[i] == ]) {
28             if (!q.empty() && q.top() == [)  {
29                 q.pop(), ans += 2, i++;
30                 if (maxn < ans) maxn = ans;
31             } else {
32                 while (s[i] == ) || s[i] == ] || s[i] == }) i++;
33                 while (!q.empty()) q.pop();
34                 ans = 0;
35             }
36         } else if (s[i] == }) {
37             if (!q.empty() && q.top() == {)  {
38                 q.pop(), ans += 2, i++;
39                 if (maxn < ans) maxn = ans;
40             } else {
41                 while (s[i] == ) || s[i] == ] || s[i] == }) i++;
42                 while (!q.empty()) q.pop();
43                 ans = 0;
44             }
45         }
46     }
47     
48 }
49 
50 int main() {
51     freopen("sequence.in", "r", stdin);
52     freopen("sequence.out", "w", stdout);
53     
54     std::cin >> s;
55     
56     fs();
57     
58     printf("%d\n", maxn);
59     return 0;
60 }

                                                                                   2017.10.16

【洛谷 1944】

标签:font   +=   top   连续子序列   har   长度   第一题   print   freopen   

原文地址:http://www.cnblogs.com/ExileValley/p/7677834.html

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