题意:给出括号的数目,求所有合法的括号表示。
题解:递归,先递归左括号,再递归右括号。
class Solution {
public:
void dfs(int l,int r,string res,vector<string>& ans)
{
if(l < 0 || r < 0 || l > r) return ;
if(l == 0 && r == 0) ans.push_back(res);
dfs(l - 1, r, res + "(", ans);
dfs(l, r - 1, res + ")", ans);
}
vector<string> generateParenthesis(int n) {
vector<string> ans;
dfs(n,n,"",ans);
return ans;
}
};