LeetCode-6-括号生成(dfs)
class Solution {
public:
vector<string> res;
void dfs(int n,int l,int r,string rs){ //n:对数 l:'('数 r:')'数
if(l==n&&r==n) res.push_back(rs); //左括号数等于右括号数等于n时,返回结果给res
if(l<n) dfs(n,l+1,r,rs+"("); //左括号小于n时,可以加左括号
if(r<n&&r<l) dfs(n,l,r+1,rs+")"); //右括号小于n时同时也小于左括号时,可以加右括号
}
vector<string> generateParenthesis(int n) {
dfs(n,0,0,"");
return res;
}
};
法二:栈