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;  
    } 

  • 相关阅读:
    docker
    opencart
    Why is setTimeout(fn, 0) sometimes useful?
    linux下php环境配置
    xampp for linux
    Where to go from here
    freefcw/hustoj Install Guide
    khan academy js
    SDWebImage
    基于OpenCV 的iOS开发
  • 原文地址:https://www.cnblogs.com/pearfl/p/10733164.html
Copyright © 2011-2022 走看看