• QDUOJ 一道简单的数据结构题 栈的使用(括号配对)


    一道简单的数据结构题

    发布时间: 2017年6月3日 18:46   最后更新: 2017年6月3日 18:51   时间限制: 1000ms   内存限制: 128M

    如果插入“+”和“1”到一个括号序列,我们能得到一个正确的数学表达式,我们就认为这个括号序列是合法的。例如,序列"(())()", "()"和"(()(()))"是合法的,但是")(", "(()"和"(()))("是不合法的。我们这有一种仅由“(”和“)”组成的括号序列,你必须改变一些括号,从而得到一个合法的括号序列,求最少改变多少个括号。

    一个只包含"("和")"的字符串,字符串的长度n小于1000000

    被改变的括号个数m

     复制
    ()))()((()
    2


    #include <stdio.h>
    #include <stack>  
    using namespace std;  
    int main()  
    {  
        stack<int> s;
        char c[1000000];  
        int num=0;  
        scanf("%s",c);  
        int i=0;  
        while(c[i]!=''){  //注意,这里的while比while((n=getchar())!='
    ')及for(i=0;i<strlen(c);i++)效率要高,否则TLE
            if(c[i]==')'){
                if(s.size()) s.pop();
                else{
                    num++;
                    s.push(1);
                }
            }
            else s.push(1);
            i++;  
        }  
        num+=s.size()/2;  
        printf("%d",num);
        return 0;
    }
  • 相关阅读:
    Vue.js
    Vue.js
    Vue.js
    Vue.js
    webpack(1)
    webpack(2)
    babel-loader7和babel8版本的问题
    [JZOJ4274] 终章-剑之魂
    [JZOJ427] 圣章-精灵使的魔法语
    BZOJ题表(红色表示已完成)
  • 原文地址:https://www.cnblogs.com/yzm10/p/7199580.html
Copyright © 2020-2023  润新知