力扣热题100—括号生成
思路:这道题第一次刷直接题解,当时想的是DP,但是实际上毫无头绪,其实是从找出所有的括号对再逐一检查,为回溯法的应用。
剪枝策略:当字符串生成到右括号个数大于左括号时,所有当前字符串已经不正确,提前结束递归
void digui(string ¤t,int n,vector<string>& res,int zuo,int you)
{
if(n==current.length())
{
if(judge(current)) //同样的思路检查左右括号个数
res.push_back(current);
return ;
}
if(you<=zuo) //剪枝策略
{
current+='(';
zuo++;
digui(current,n,res,zuo,you);
current.pop_back();
zuo--;
current+=')';
you++;
digui(current,n,res,zuo,you);
current.pop_back();
you--;
}
}