1. 程式人生 > >22.生成所有的括號組合

22.生成所有的括號組合

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); } }

這裡寫圖片描述