题目

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

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

Ideas

针对括号内的部分递归处理。

Code

C++

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

Python

import sysdef dfs():global posres = tmp = 0while pos < len(s):if s[pos] == '(':pos += 1tmp += dfs()elif s[pos] == ')':pos += 1res = max(res, tmp)return reselif s[pos] == 'x':pos += 1tmp += 1elif s[pos] == '|':pos += 1res = max(res, tmp)tmp = 0res = max(res, tmp)return resif __name__ == '__main__':sys.setrecursionlimit(10000)pos = 0s = input()print(dfs())

2017/Province_C_C++_A/7/正则问题相关推荐

  1. 2017/Province_C_C++_A/2/跳蚱蜢

    标题:跳蚱蜢 如图 p1.png 所示: 有9只盘子,排成1个圆圈. 其中8只盘子内装着8只蚱蜢,有一个是空盘. 我们把这些蚱蜢顺时针编号为 1~8. 每只蚱蜢都可以跳到相邻的空盘中,也可以再用点力, ...

  2. 2019/Province_C_C++_A/F/完全二叉树的权值

    完全二叉树的权值 Code Python if __name__ == '__main__':N = int(input())A = list(map(int, input().split()))cu ...

  3. 2019/Province_C_C++_A/D/迷宫

    [问题描述] 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可以通行的地方. 010000 000100 001001 110000 迷宫的入口为左上角,出口为右下角,在迷宫中 ...

  4. 2019/Province_C_C++_A/B/数列求值

    Ideas 三个变量不断迭代,往前滚动计算. Code 注意要取余,不然数贼大,算不完的. Python if __name__ == '__main__':a, b, c = 1, 1, 1for ...

  5. 2019/Province_C_C++_A/C/最大降雨量

    每周的前三天都取比较小的值,后四天尽量大 1 8 15 46 47 48 49 2 9 16 42 43 44 45 3 10 17 38 39 40 41 4 11 18 34 35 36 37 5 ...

  6. 2020/Province_C_C++_A/F/成绩分析

    Code Python if __name__ == '__main__':achievements = []n = int(input())for _ in range(n):achievement ...

  7. 2020/Province_C_C++_A/A/门牌制作

    Code Python if __name__ == '__main__':ans = 0for i in range(1, 2021):ans += str(i).count('2')print(a ...

  8. 2017/Province_C_C++_B/2/等差素数列

    标题:等差素数列 2,3,5,7,11,13,-是素数序列. 类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列. 上边的数列公差为30,长度为6. 2004年, ...

  9. 2013\Province_C_C++_A\7.错误票据

    某涉密单位下发了某种票据,并要在年终全部收回. 每张票据有唯一的ID号.全年所有票据的ID号是连续的,但ID的开始数码是随机选定的. 因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID ...

最新文章

  1. java mysql 是否插入 成功_您如何确定使用Java和MySQL插入或更新是否成功?
  2. MySQL在创建相同表结构时as和like 使用的区别
  3. python编程语法大全-python语法汇总
  4. mybatis-plus AutoGenerator
  5. 第一次冲刺对各组的评价
  6. KEILC51警告:WARNING L15: MULTIPLE CALL TO SEGMENT
  7. 处理字符串_2_遍历字符串里的每个值
  8. SQLLite (一)基本介绍
  9. 计算机软件在矿井地质中的应用,(完整版)遥感导论知识点整理(梅安新版)
  10. 使用AIR运行另外的程序。
  11. python 字符串截取_Python 字符串操作实现代码(截取/替换/查找/分割)
  12. python 日历热力图_Python如何绘制日历图和热力图
  13. 2021年上半年软考真题网络工程师真题及答案解析
  14. (转)wxWindows一些网文
  15. 通信感知一体化概述(IMT-2030 6G)
  16. 服务器信息批量收集,如何批量导入或导出服务器信息
  17. 详解DHT11温湿度传感器的原理及驱动程序
  18. nyoj779兰州烧饼
  19. 让图片动起来——Real_Time_Image_Animation
  20. 少一点张扬,多一点谦虚;少一点英雄主义,多一点实事求是——读2008第11期《IT经理世界》

热门文章

  1. sql优化的方法总结
  2. 输入输出(Input and Output)
  3. 谈谈DictionaryT1,T2和ListT的问题
  4. 安装和使用Glassfish
  5. 阳光学院计算机科学与技术需要英语四级,给各位想报阳光的朋友一点建议!来自学长的亲身经历!...
  6. 剪裁tiff影像数据_能看更会用,超擎影像云平台带你轻松玩转海量影像!
  7. Java黑皮书课后题第2章:*2.23(驾驶费用)编写一个程序,提示用户输入驾驶的距离、每加仑多少英里的汽车燃油性能值,以及每加仑的价格,然后显示旅程的费用
  8. C语言学习之试编程从键盘输入2*3的二维数组,将该数组行列交换输出。
  9. 如何给页面加上loding_怎么做404页面?
  10. 用C++设计一个不能被继承的类