题目:
题目思路:
使用两个整数来计算剩余的左括号(n)和右括号(m)。 在每个函数调用中,如果n> 0,则添加左括号,如果m> 0,则添加右括号。 当m和n都为零时追加结果并终止递归调用。
这是一道很经典的递归调用题目。
class Solution {
public:
vector<string> generateParenthesis(int n) {
vector<string> res;
addingpar(res, "", n, 0);
return res;
}
void addingpar(vector<string> &v, string str, int n, int m){
if(n==0 && m==0) {
v.push_back(str);
return;
}
if(m > 0){ addingpar(v, str+")", n, m-1); }
if(n > 0){ addingpar(v, str+"(", n-1, m+1); }
}
};