复习算法基础课数论
1.试除法判定质数
2.分解质因数
3.筛质数
4.约数之和
5.快速幂
完成蓝桥杯每日一题
1.正则问题(递归,中等题)
以下是部分题目的代码
//正则问题
string str;
int len, cur;//cur设为全局变量,以便数组顺利遍历
int dfs()
{
int res = 0;
while (cur < len)//相比for循环,用while可以灵活改变索引
{
if (str[cur] == '(')
{
cur++;//在外部改变下标而不是改变dfs的参数
res += dfs();
cur++;//细节,遇到')'不会改变下标,需要手动加上
}
else if (str[cur] == ')')
{
break;
}
else if (str[cur] == '|')
{
cur++;
res=max(res, dfs());
}
else
{
cur++;
res++;
}
}
return res;//放到最后
}
int main()
{
ios::sync_with_stdio(false);
cin >> str; len = str.length();
cout << dfs() << endl;
return 0;
}