深度优先搜索
class Solution {
public:
vector<string>ans;
vector<string> generateParenthesis(int n) {
dfs(n,0,0,"");
return ans;
}
void dfs(int n,int lc,int rc,string path){ //lc表示左括号总数,rc表示右括号总数
if(lc==n && rc==n)ans.push_back(path);
else{
if(lc<n)dfs(n,lc+1,rc,path+'(');
if(rc<n && lc>rc)dfs(n,lc,rc+1,path+')'); //当右括号总数小于左括号时可添加右括号
}
}
};
//dfs