正则问题(分治模拟)

试题 历届真题 正则问题【第八届】【省赛】【A组】
     
资源限制
内存限制:256.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s
  考虑一种简单的正则表达式:
  只由 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>
  不能通过工程设置而省略常用头文件。

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

简单的利用分治调用函数的思想,

模拟过程:

从左往右依次 有| 就比大小,没有直接+,就行了。

 

遇到 () dfs((,)),遇到 | 调用 dfs(|后面的所有范围)

posted @ 2022-04-05 15:45  VxiaohuanV  阅读(21)  评论(0)    收藏  举报