# 括号生成

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

 

示例 1:

输入:n = 3
输出:
["((()))","(()())","(())()","()(())","()()()"]

示例 2:

输入:n = 1
输出:
["()"]

 

提示:

## template ```cpp class Solution { public: void gen(string &p, int lc, int rc, vector &r, int n) { if (lc > n) return; if (lc == n && rc == n) { r.push_back(p); return; } p.push_back('('); lc++; gen(p, lc, rc, r, n); p.pop_back(); lc--; if (lc > rc) { p.push_back(')'); rc++; gen(p, lc, rc, r, n); p.pop_back(); rc--; } } vector generateParenthesis(int n) { string p; int lc = 0, rc = 0; vector r; gen(p, lc, rc, r, n); return r; } }; ``` ## 答案 ```cpp ``` ## 选项 ### A ```cpp ``` ### B ```cpp ``` ### C ```cpp ```