您的位置:首页 > 其它

[Leetcode] Generate Parentheses

2014-08-06 10:03 399 查看
问题:

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:

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

产生所有括号的组合,核心要点是如果左括号数nl>=nr右边括号数,则只能放入左括号,如果nl<nr,则当前位置可以放左或右括号。

vector<string> str;
char a='(';
char b=')';
void rankkuohao(string s, char c, int nl, int nr)
{
if( c !=' ') s.push_back(c);
if(nl==0 &&nr==0)
{
str.push_back(s);
s.clear();
};

if( nr > nl)
{
if(nl>0)
rankkuohao(s, a,nl-1, nr); //放入之后数量减一

if(nr>0)
rankkuohao(s, b, nl, nr-1);
}
else if(nl>0)
rankkuohao(s, a, nl-1, nr);

}
vector<string> generateParenthesis(int n)
{ string s;
char c=' ';
if (n<1) return str;
rankkuohao(s, c, n, n);
return str;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: