原文地址:http://www.cnblogs.com/codingmylife/archive/2012/09/09/2677428.html
还有:http://blog.csdn.net/yutianzuijin/article/details/13161721
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:
"((()))", "(()())", "(())()", "()(())", "()()()"
我:注意在更新curr的时候,用的是“”号。
<span style="color:#333333;">class Solution {
public:
void unguarded_generate(vector<string> &result,string curr,int m,int n)
{
if(m==0&&n==0)
result.push_back(curr);
else
{
if(m!=0)
unguarded_generate(result,curr+"(",m-1,n);
if(m<n&&n!=0)
unguarded_generate(result,curr+")",m,n-1);
}
}
vector<string> generateParenthesis(int n) {
vector<string> ret;
if(n>0)
unguarded_generate(ret,string(),n,n);
return ret;
}
};</span>