zoukankan      html  css  js  c++  java
  • 九度OJ 1342:寻找最长合法括号序列II (DP)

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:898

    解决:366

    题目描述:
    假如给你一个由’(‘和’)’组成的一个随机的括号序列,当然,这个括号序列肯定不能保证是左右括号匹配的,所以给你的任务便是去掉其中的一些括号,使得剩下的括号序列能够左右括号匹配且长度最长,即最长的合法括号序列。
    输入:
    测试数据包括多个,每个测试数据只有一行,即一个随机的括号序列,该括号序列的长度保证不超过106
    输出:
    对于每个测试案例,输出一个整数,表示最后剩下的最长合法括号序列长度。
    样例输入:
    (())()
    (()
    样例输出:
    6
    2

    思路:

    这个题比1337题简单多了。

    计数左括号数目left,遇到左括号则加,右括号则减(left为0则不需要处理)。

    右括号减说明遇到了一对括号匹配,count+=2。

    最后count就是所求。


    代码:

    #include <stdio.h>
     
    #define N 1000000
     
    int main(void)
    {
        int i;
        char s[N+1];
        int left, count;
     
        while (scanf("%s", s) != EOF)
        {
            left = count = 0;
            for(i=0; s[i]; i++)
            {
                if (s[i] == '(')
                    left ++;
                else if (left > 0)
                {
                    left --;
                    count += 2;
                }
            }
            printf("%d
    ", count);
        }
     
        return 0;
    }
    /**************************************************************
        Problem: 1342
        User: liangrx06
        Language: C
        Result: Accepted
        Time:30 ms
        Memory:1820 kb
    ****************************************************************/


  • 相关阅读:
    Linux之C编译器gcc和makefile使用简介
    基于OWin的Web服务器Katana发布版本3
    OAuth和OpenID的区别
    关于 Token,你应该知道的十件事
    HTTP Header 详解
    Entity Framework教程及文章传送门
    CSP(Content Security Policy) 入门教程
    gulp构建工具的几个使用技巧
    浅谈程序员的英语学习
    如何选择正确的angular2学习曲线?
  • 原文地址:https://www.cnblogs.com/liangrx06/p/5083791.html
Copyright © 2011-2022 走看看