题目背景
以下为不影响题意的简化版题目。
题目描述
给出一个由(,),|,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<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
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;
}