蓝桥集训之正则问题
-
核心思想:递归
- 归结到一棵树 向上返回x数量
-
#include<iostream>#include<cstring>using namespace std;int k;string str;int dfs(){int res=0; //记录x数量while(k<str.size()){if(str[k] == '('){k ++; //跳过左括号res +=dfs();k ++; //跳过右括号}else if(str[k] == '|'){k ++; //跳过 |res = max(res,dfs()); //左右两边取最大值}else if(str[k] == ')') break; //一个括号结束 直接returnelse //记录连续x数量{res++;k++;}}return res;}int main(){cin>>str;cout<<dfs()<<endl;return 0;}