zoukankan      html  css  js  c++  java
  • 蓝桥杯-正则问题(dfs,解决()的计算)

    历届试题 正则问题  
    时间限制:1.0s   内存限制:256.0MB
        
    问题描述
      考虑一种简单的正则表达式:
      只由 x ( ) | 组成的正则表达式。
      小明想求出这个正则表达式能接受的最长字符串的长度。


      例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字符串是: xxxxxx,长度是6。
    输入格式
      一个由x()|组成的正则表达式。输入长度不超过100,保证合法。
    输出格式
      这个正则表达式能接受的最长字符串的长度。
    样例输入
    ((xx|xxx)x|(x|xx))xx
    样例输出
    6
    数据规模和约定
      峰值内存消耗(含虚拟机) < 256M
      CPU消耗 < 1000ms




      请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。


      注意:
      main函数需要返回0;
      只使用ANSI C/ANSI C++ 标准;
      不要调用依赖于编译环境或操作系统的特殊函数。
      所有依赖的函数必须明确地在源文件中 #include <xxx>
      不能通过工程设置而省略常用头文件。


      提交程序时,注意选择所期望的语言类型和编译器类型。


    #include<bits/stdc++.h>
    using namespace std;  
    
    string str;  
    int pos,len,ans;
      
    int dfs(){  
        int num = 0, res = 0;  
        while (pos < len) {  
            if (str[pos] == '(') {  
                pos++;  
                num += dfs();  
            }  
            else if (str[pos] == ')') {  
                pos++;  
                break;  
            }  
            else if (str[pos] == '|') {  
                pos++;  
                res = max(num, res);  
                num = 0;  
            }  
            else {  
                pos++;  
                num++;
            }  
        }  
        res = max(num, res);  
        return res;  
    }  
    int main() 
    {  
        cin >> str;    
        len = str.length(),pos = 0;  
        ans = dfs();  
        cout << ans << endl;  
        return 0;  
    } 

  • 相关阅读:
    Vue自定义过滤器
    Vue自带的过滤器
    vue单页面程序
    Angular 通过 $http.post 写入本地 JSON 文件
    Windows下搭建PHP开发环境
    在MyEclipse下创建Java Web项目 入门(图文并茂)经典教程
    jQuery编程的最佳实践
    微信小程序 TLS 版本必须大于等于1.2问题解决
    linux批量压缩当前目录中文件后,删除原文件
    docker 删除镜像
  • 原文地址:https://www.cnblogs.com/pearfl/p/10733164.html
Copyright © 2011-2022 走看看