您的位置:首页 > 其它

LeetCode: Generate Parentheses

2016-10-12 17:50 381 查看
题目:

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:

[

“((()))”,

“(()())”,

“(())()”,

“()(())”,

“()()()”

]

这是一个生成括号的问题。给出n对括号,要求生成不同搭配组合的括号。要找出所有满足条件的解,可以用深搜算法,用递归来实现,算法复杂度为o(2^n)。由于左括号一定优先于右括号,算法执行时按先给左括号,然后在确定已给的左括号大于右括号的情况下,再给右括号。代码:

class Solution {
public:
//递归过程
void generate(vector<string>& result,string s,int m,int n)
{
if(m==0&&n==0) result.push_back(s);//递归结束条件
else
{
if(m!=0) generate(result,s+'(',m-1,n);//放左括号
if(m<n&&n!=0) generate(result,s+')',m,n-1);//放右括号
}
}
vector<string> generateParenthesis(int n) {
vector<string> result;
string temp="";
if(n==0) return result;
generate(result,temp,n,n);
return result;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: