题目描述数字 n 代表生成括号的对数请你设计一个函数用于能够生成所有可能的并且 有效的 括号组合。示例 1输入n 3输出[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]示例 2输入n 1输出[“()”]提示1 n 8思路1 当左边的数量右边的数量继续放右边一定是合法的。2 直接进行递归每次可以选择左边或者右边。3 可以进行剪枝当左边用完了就不能选择左边当右边的数量等于左边的时候也不能选择右边。代码classSolution{public:vectorstringgenerateParenthesis(intn){vectorstringans;string s;// n个左边和n个右边dfs(n,n,s,ans);returnans;}voiddfs(intleft_num,intright_num,strings,vectorstringans){if(left_num0right_num0){ans.push_back(s);return;}// 1 选择左边if(left_num0){s.push_back(();dfs(left_num-1,right_num,s,ans);s.pop_back();}// 2 选择右边if(right_numleft_num){s.push_back());dfs(left_num,right_num-1,s,ans);s.pop_back();}}};