22.生成所有的括號組合
阿新 • • 發佈:2019-01-25
Generate Parentheses
問題描述:
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:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
知識補充:
引用的使用
void add_s(vector<string> &r,string str,int left ,int right)
//其中vector<string> &r,我們需要使用引用&來保證引數的傳遞,如果不使用引用只是一個形參對r的操作無法影響到初始的r,使用引用後相當於是r的別名,對他的操作就相當於對r本身的操作
測試程式碼:
int main()
{
int n = 4;
vector<string> result;
add_s(result,"",n,0);
return result;
}
void add_s(vector<string> &r,string str,int left ,int right)
{
if(left==0&&right==0)
{
r.push_back(str);
return;
}
if(left>0)
{
add_s(r,str+"(",left-1,right+1);
}
if(right>0)
{
add_s(r,str+")",left,right-1);
}
}