2017/Province_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
不能通过工程设置而省略常用头文件。
提交程序时,注意选择所期望的语言类型和编译器类型。
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/正则问题相关推荐
- 2017/Province_C_C++_A/2/跳蚱蜢
标题:跳蚱蜢 如图 p1.png 所示: 有9只盘子,排成1个圆圈. 其中8只盘子内装着8只蚱蜢,有一个是空盘. 我们把这些蚱蜢顺时针编号为 1~8. 每只蚱蜢都可以跳到相邻的空盘中,也可以再用点力, ...
- 2019/Province_C_C++_A/F/完全二叉树的权值
完全二叉树的权值 Code Python if __name__ == '__main__':N = int(input())A = list(map(int, input().split()))cu ...
- 2019/Province_C_C++_A/D/迷宫
[问题描述] 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可以通行的地方. 010000 000100 001001 110000 迷宫的入口为左上角,出口为右下角,在迷宫中 ...
- 2019/Province_C_C++_A/B/数列求值
Ideas 三个变量不断迭代,往前滚动计算. Code 注意要取余,不然数贼大,算不完的. Python if __name__ == '__main__':a, b, c = 1, 1, 1for ...
- 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 ...
- 2020/Province_C_C++_A/F/成绩分析
Code Python if __name__ == '__main__':achievements = []n = int(input())for _ in range(n):achievement ...
- 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 ...
- 2017/Province_C_C++_B/2/等差素数列
标题:等差素数列 2,3,5,7,11,13,-是素数序列. 类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列. 上边的数列公差为30,长度为6. 2004年, ...
- 2013\Province_C_C++_A\7.错误票据
某涉密单位下发了某种票据,并要在年终全部收回. 每张票据有唯一的ID号.全年所有票据的ID号是连续的,但ID的开始数码是随机选定的. 因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID ...
最新文章
- java mysql 是否插入 成功_您如何确定使用Java和MySQL插入或更新是否成功?
- MySQL在创建相同表结构时as和like 使用的区别
- python编程语法大全-python语法汇总
- mybatis-plus AutoGenerator
- 第一次冲刺对各组的评价
- KEILC51警告:WARNING L15: MULTIPLE CALL TO SEGMENT
- 处理字符串_2_遍历字符串里的每个值
- SQLLite (一)基本介绍
- 计算机软件在矿井地质中的应用,(完整版)遥感导论知识点整理(梅安新版)
- 使用AIR运行另外的程序。
- python 字符串截取_Python 字符串操作实现代码(截取/替换/查找/分割)
- python 日历热力图_Python如何绘制日历图和热力图
- 2021年上半年软考真题网络工程师真题及答案解析
- (转)wxWindows一些网文
- 通信感知一体化概述(IMT-2030 6G)
- 服务器信息批量收集,如何批量导入或导出服务器信息
- 详解DHT11温湿度传感器的原理及驱动程序
- nyoj779兰州烧饼
- 让图片动起来——Real_Time_Image_Animation
- 少一点张扬,多一点谦虚;少一点英雄主义,多一点实事求是——读2008第11期《IT经理世界》
热门文章
- sql优化的方法总结
- 输入输出(Input and Output)
- 谈谈DictionaryT1,T2和ListT的问题
- 安装和使用Glassfish
- 阳光学院计算机科学与技术需要英语四级,给各位想报阳光的朋友一点建议!来自学长的亲身经历!...
- 剪裁tiff影像数据_能看更会用,超擎影像云平台带你轻松玩转海量影像!
- Java黑皮书课后题第2章:*2.23(驾驶费用)编写一个程序,提示用户输入驾驶的距离、每加仑多少英里的汽车燃油性能值,以及每加仑的价格,然后显示旅程的费用
- C语言学习之试编程从键盘输入2*3的二维数组,将该数组行列交换输出。
- 如何给页面加上loding_怎么做404页面?
- 用C++设计一个不能被继承的类