news 2026/5/1 8:33:36

打卡信奥刷题(2756)用C++实现信奥题 P3719 [AHOI2017初中组] rexp

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
打卡信奥刷题(2756)用C++实现信奥题 P3719 [AHOI2017初中组] rexp

P3719 [AHOI2017初中组] rexp

题目背景

为了解决形形色色的字符串匹配问题,正则表达式是一个强有力的工具。正则表达式通过定义一套符号体系,能够表示出需要查找的字符串所具有的性质。如a|aa能匹配aaa(a|b)c能匹配acbc

题目描述

完整的正则表达式过于复杂,在这里我们只考虑由()|a组成的正则表达式。运算遵循下列法则:

  1. 有括号时,我们总是先算括号内的部分;

  2. 当两个字符串(或由括号定义的子串)间没有符号时,我们总把它们连起来作为一个整体;

  3. |是或连接符,表示两边的字符串任取其一,若同一层里有多个或连接符,可以看作在这些或连接符所分开的若干字符串里任取其一。

例如,(aaa)aa|aa|(a(aa)a)(aaaaa)|(aa)|aaaaaaaaa|aaaa|aa是等价的,它们都能匹配长度为2 , 4 2,42,45 55的全a字符串。

下面给定一个简化正则表达式,试编程计算它最多能匹配多长的全a字符串。

输入格式

输入一行一个合法的简化正则表达式。

输出格式

一行一个整数,表示能匹配的最长全a字符串长度。

输入输出样例 #1

输入 #1

(aaa)aa|aa|(a(aa)a)

输出 #1

5

输入输出样例 #2

输入 #2

((a|aaa)|aa)|a

输出 #2

3

输入输出样例 #3

输入 #3

(a(aa|aaa)a|(a|aa))aa

输出 #3

7

说明/提示

【数据范围】

对于20 % 20\%20%数据,表达式长度不超过100 100100,且不存在括号。

对于40 % 40\%40%数据,表达式长度不超过100 100100

对于70 % 70\%70%数据,表达式长度不超过2 × 10 3 2 \times 10^32×103

对于100 % 100\%100%的数据,表达式长度不超过10 5 10^5105

保证表达式合法(即|两端和括号内运算结果均非空字符串)。

C++实现

#include<stdio.h>#include<string.h>inti=1;charch[100005];intwork(){intlen=0,t;while(1){i++;if(ch[i]==')'){returnlen;}//右括号必须写在前面if(ch[i]=='a')len++;if(ch[i]=='(')len+=work();if(ch[i]=='|'){t=work();return(len>t)?len:t;}//这个地方必须加return}}intmain(){scanf("%s",ch+1);intlen,num,sum=0,max=0;len=strlen(ch+1);while(i<=len){if(ch[i]=='a')sum++,i++;elseif(ch[i]=='('){num=work();sum=sum+num;}elseif(ch[i]=='|')if(sum>max)max=sum,sum=0,i++;elsesum=0,i++;elseif(ch[i]==')')i++;}printf("%d",(sum>max)?sum:max);return0;}

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 15:01:44

2026毕设ssm+vue旅店管理系统论文+程序

本系统&#xff08;程序源码&#xff09;带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、选题背景随着我国旅游业的蓬勃发展和商务出行需求的持续增长&#xff0c;酒店行业迎来了前所未有的发展机遇。根据中国饭店协会数据显示…

作者头像 李华
网站建设 2026/4/25 9:18:52

激光切割雕刻机设计

2激光切割机所能实现的两种功能及特点 2.1激光切割 采用激光切割技术切割金属板材时&#xff0c;由于对板材无作用力&#xff0c;且热形变很小&#xff0c;所以适合切割精度要求较高的零件。激光切割术的加工原理是用凸透镜将激光器发出的激光束聚焦在工件表面上产生的高温使工…

作者头像 李华
网站建设 2026/5/1 7:19:18

2026毕设ssm+vue论文评审系统论文+程序

本系统&#xff08;程序源码&#xff09;带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、选题背景关于高校毕业论文管理问题的研究&#xff0c;现有研究主要以传统人工管理模式和单一功能管理系统为主&#xff0c;专门针对基于…

作者头像 李华
网站建设 2026/5/1 7:36:48

收藏!大模型转行全攻略:小白与程序员必看的就业逻辑拆解

在当下科技圈&#xff0c;大模型无疑是站在风口的核心赛道&#xff0c;几乎占据了行业热门话题的半壁江山&#xff0c;成为新时代技术人竞相关注的焦点。不少程序员和职场新人都有这样的困惑&#xff1a;作为新兴领域&#xff0c;大模型行业理应人才缺口大、竞争相对缓和&#…

作者头像 李华
网站建设 2026/5/1 8:07:47

基于哈里斯鹰算法HHO优化TV图像修复附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

作者头像 李华