问题
为什么当遇到第一个')',并break,之后,却先接着从while循环执行,然后再从第一个if语句里的第二个k++开始?不应该从)前的x几个return开始吗?(以样例为例)
题目
代码
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
int k;
string str;
int dfs()
{
int res=0;
while(k<str.size())
{
if(str[k]=='(')//判断是否为左括号,标志着判断的开始
{
k++;//若为左括号则让下标加一,继续判断下一个
res+=dfs();
k++;
}
else if(str[k]=='|')//若为|,则判断两侧哪侧的x较多,并让res为那个值
{
k++;
res=max(res,dfs());
}
else if(str[k]==')') break;//若为右括号,则标志着一个括号内的内容判断结束
else//若为x,则让res加一,接着向下判断下一个数
{
k++;
res++;
}
}
return res;
}
int main()
{
cin>>str;
cout<<dfs()<<endl;
return 0;
}
你把break;
换一行,调试时把断点打在break;
单独那行