以下代码来源于他人博客 代码来源
对于程序的几点解释:
- 每个Fun函数都有各自的一个x,不是大家共用的x,x放在函数体前面才是全局变量
- 对于非第一个'|'号,y表示'|'号左边的a的数量,x表示'|'右边的a的数量。y就是用来记录'|'左边的a的数量,然后x接着去找'|'号右边有多少个a
- 当遇到'('时,需要在当前已经找到的a的个数的基础上再加上这一组'()'里所包含的a的数目
#include<bits/stdc++.h>
using namespace std;
int Fun(){
char data;
int x=0,y=0;
while(1){
data=getchar();
if (data=='a') x++;
else if (data=='|') {
y=max(x,y);
x=0;
}
else if (data=='(')
x+=Fun();
else {
y=max(x,y);
return y;
}
}
}
int main(){
int ans=Fun();
cout<<ans<<endl;
}