您的位置:首页 > 其它

LEETCODE: Generate Parentheses

2014-12-13 13:04 423 查看
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.

For example, given n = 3, a solution set is:

"((()))", "(()())", "(())()", "()(())", "()()()"

没有思路就递归吧,直接在LEETCODE写代码,一次成功。思路,就是当前的位置上,如果还有剩余可放的括号,也只可能有两种情况,'(' 和 ')' 。如果前面的有多余的 '(',我们可以放两种中的任何一种,如果没有,就放')'。然后,递归处理剩余的直到所有的左括号都用完了。

class Solution {
public:
void generating(string pre, int remain, int gapright, vector<string> &results) {
if(remain == 0) {
for(int ii = 0; ii < gapright; ii ++)
pre += ')';
results.push_back(pre);
}
else {
generating(pre + '(', remain - 1, gapright + 1, results);
if(gapright > 0) {
generating(pre + ')', remain, gapright - 1, results);
}
}

}
vector<string> generateParenthesis(int n) {
vector<string> results;
generating("(", n - 1, 1, results);
return results;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  LEETCODE 算法 递归