• 征战蓝桥 —— 2017年第八届 —— C/C++A组第7题——正则问题


    题目

    考虑一种简单的正则表达式:
    只由 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
    不能通过工程设置而省略常用头文件。

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

    代码

    #include <iostream>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    char s[100];
    int len,pos;
    int f()
    {
    	int m=0,tmp=0;
    	while(pos<len)
    	{
    		switch(s[pos])
    		{
    			case '(':
    				{
    					pos++;
    					tmp+=f();
    					break;
    				}
    			case ')':
    				{
    					pos++;
    					m=max(m,tmp);
    					return m;
    				}
    			case 'x':
    				{
    					pos++;
    					tmp++;
    					break;
    				}
    			case '|':
    				{
    					pos++;
    					m=max(m,tmp);
    					tmp=0;
    					break;
    				}
    		}
    	}
    	m=max(m,tmp);
    	return m;
    }
    int main()
    {
    	cin>>s;
    	len=strlen(s);
    	int ans=f();
    	cout<<ans<<endl;
    	return 0;
    }
    
  • 相关阅读:
    初识ES6
    初识NODE
    AJAX详解
    PHP 文件与目录操作函数总结
    PHP封装一个通用好用的文件上传处理类
    PHP基础之 错误处理 及 异常处理
    PHP基础OOP(二) 多态
    PHP基础之 重载 的实现方式
    CCS3的过渡、变换、动画以及响应式布局、弹性布局
    CSS之盒子模型(由浅到深的理解)
  • 原文地址:https://www.cnblogs.com/AlexKing007/p/12338604.html
Copyright © 2020-2023  润新知