题目背景
以下为不影响题意的简化版题目。
题目描述
给出一个由(,),|,a组成的序列,求化简后有多少个a。
化简规则:
1、形如aa...a|aa...a|aa...a的,化简结果为“|”两边a的个数最多的一项,例如a|aa|aaa=aaa 3、先算带括号的序列,例如(a|a)|aaa=aaa
输入格式
一行一个序列
输出格式
化简后a的个数
输入输出样例
输入 #1复制
aa(aa)|(aa|(a|aa))aa
输出 #1复制
4
说明/提示
原题的样例记不得了,只能随便写个代替了。。。
序列长度不超过100000
保证序列合法且括号内和“|”左右均非空
#include#include #include #include #include #include using namespace std;int findans(int ans){ char c; while((c=getchar())!=EOF){ if(c=='a'){ans++;} if(c=='('){ans=ans+findans(0);} if(c=='|'){return max(ans,findans(0));} if(c==')'){return ans;} } return ans;}int main(){ printf("%d",findans(0)); return 0;}