文章目录
括号生成
1,程序简介
- 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例 1:
- 输入:n = 3
- 输出:["((()))","(()())","(())()","()(())","()()()"]
示例 2:
提示:
1 <= n <= 8
以下程序实现了这一功能,请你填补空白处内容:
class Solution
{
public:
void gen(string &p, int lc, int rc, vector<string> &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)
{
_________________
}
}
vector<string> generateParenthesis(int n)
{
string p;
int lc = 0, rc = 0;
vector<string> r;
gen(p, lc, rc, r, n);
return r;
}
};
2,程序代码
# -*- coding: utf-8 -*-
"""
Created on Fri Dec 24 19:07:56 2021
Function:
@author: 小梁aixj
"""
from typing import List
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
def gen(p, lc, rc, r, n):
if lc > n:
return
if lc == n and rc == n:
r.append(''.join(p))
p.append('(')
lc += 1
gen(p, lc, rc, r, n)
p.pop()
lc -= 1
if lc > rc:
p.append(')')
rc += 1
gen(p, lc, rc, r, n)
p.pop()
rc -= 1
results = []
gen([], 0, 0, results, n)
return results
# %%
s = Solution()
print(s.generateParenthesis(n = 3)) #['((()))', '(()())', '(())()', '()(())', '()()()']
print(s.generateParenthesis(n = 1)) #['()']
3,运行结果