P3719 [AHOI2017初中组]rexp

题目背景

以下为不影响题意的简化版题目。

题目描述

给出一个由(,),|,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;
}

  

posted @ 2019-08-21 21:34  xiongcw  阅读(260)  评论(0)    收藏  举报