class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return string字符串vector */ vector<string> ans; string temp; int left = 0; int right = 0; vector<string> generateParenthesis(int n) { left = right = n; dp(); return ans; } void dp(){ if(left == 0 && right ==0){ //终止条件 ans.push_back(temp); return; } if(left >0){ //添加左括号; temp.push_back('('); left--; dp(); temp.pop_back(); left++; } if(right >0 && right >left){ //用左右括号的剩余关系来限制右括号的添加,右括号的剩余必须大于左括号的剩余才能添加; temp.push_back(')'); right--; dp(); temp.pop_back(); right++; } } };