因此,把上面的思路拼起来就是代码:
if (左右括号都已用完) {
加入解集,返回
}
//否则开始试各种选择
if (还有左括号可以用) {
加一个左括号,继续递归
}
if (右括号小于左括号) {
加一个右括号,继续递归
}
c++ 实现代码:
class Solution {
public:
vector generateParenthesis(int n) {
vector result;
generate(n, n, "", result);
return result;
}
void generate(int leftNums, int rightNums, string s, vector& result){
if (leftNums == 0 && rightNums == 0) result.push_back(s);
if (leftNums > 0){
generate(leftNums - 1, rightNums, s + "(", result);
}
if (leftNums < rightNums && rightNums > 0){
generate(leftNums, rightNums - 1, s + ")", result);
}
}
};
http://www.1point3acres.com/bbs/thread-172641-1-1.html
http://blog.csdn.net/yutianzuijin/article/details/13161721