1321: [蓝桥杯2017初赛]正则问题
思路:遇到‘(’左括号进入递归,遇到‘)’右括号退出递归,遇到‘|’, 对tmp清零, 遇到‘x’, tmp++,由这些方法得到代码
还想了有点久,做蓝桥多了,cf都不会了,就只想着暴力,递归了。
难顶
string s;
int pos = 0;
int dfs(){
int tmp = 0, cnt = 0;
while(pos<s.length()){
if(s[pos]=='x'){
tmp++;
pos++;
}else if(s[pos]=='('){
pos++;
tmp += dfs();
}else if(s[pos]==')'){
pos++;
break;
}else if(s[pos]=='|'){
pos++;
cnt = max(cnt, tmp);
tmp = 0;
}
}
return max(cnt, tmp);
}
signed main(){
cin>>s;
cout<<dfs()<<endl;
return 0;
}