zoukankan      html  css  js  c++  java
  • qscoj 11 喵哈哈村的括号序列

    链接

    http://qscoj.cn/problem/11/

    发布时间: 2017年2月21日 20:05   最后更新: 2017年2月21日 20:07   时间限制: 1000ms   内存限制: 128M

    描述

    喵哈哈村的括号序列和外界的括号序列实际上是一样的。

    众所周知"()"这样的,就是一个标准的括号序列;"()()()()"这样也是括号序列;“((()))()”这样也是一个合法的括号序列。但是"((("这样,就不是一个合法的括号序列了。

    现在沈宝宝非常好奇,给你一个字符串,请从中找出最长的合法括号序列出来。

    不知道你能找到吗?

    输入

    第一行一个T,表示有T组数据。
    接下来T行,每一行都是一个字符串。
    保证字符串的长度小于100000。
    而且字符串中保证只会出现"(",")"这两种字符之一。
    1<=T<=10

    输出

    对于每一组测试数据,输出最长的合法括号序列的长度。

     
    2
    )((())))(()())
    )(
    样例输出1
    6
    0

    题解
    若为“(”,存入栈S,若遇到“)”,将“(”,“)“都标记为1,取出栈顶,若位置连续为1,用mx记录括号组数。
    #include<bits/stdc++.h>
    using namespace std;
    const int maxn = 100006;
    string s;
    int vis[maxn];
    
    void solve(){
        cin>>s;
        memset(vis,0,sizeof(vis));
        stack<int> S;
        for(int i=0;i<s.size();i++){
            if(s[i]=='(') S.push(i);
            else {
                if(S.size()==0)continue;
                vis[i]=1;
                vis[S.top()]=1;
                S.pop();
            }
        }
        int ans=0,mx=0;
        for(int i=0;i<s.size();i++){
            if(vis[i]==0) mx=0;
            else mx++;
            ans=max(ans,mx); 
        }
        cout<<ans<<endl;
    }
    
    int main(){
        int n;
        cin>>n;
        while(n--){
            solve();
        }   
    }

     

  • 相关阅读:
    段落排版--对齐
    1055. The World's Richest (25)
    1054. The Dominant Color (20)
    (八十一)利用系统自带App来实现导航
    (八十)MapKit放置系统默认大头针和自定义大头针
    (七十九)MapKit的基本使用
    1052. Linked List Sorting (25)
    (七十八)使用第三方框架INTULocationManager实现定位
    (七十七)地理编码与反地理编码
    1051. Pop Sequence (25)
  • 原文地址:https://www.cnblogs.com/EdSheeran/p/6522516.html
Copyright © 2011-2022 走看看