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++;
}
}
};