版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fuqiuai/article/details/83419572
题目链接:https://leetcode-cn.com/problems/generate-parentheses/description/
题目描述
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。
例如,给出 n = 3,生成结果为:
[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
解决方法
用递归,排列组合的问题
//用递归,排列组合的问题
class Solution {
vector<string> res;
public:
vector<string> generateParenthesis(int n) {
generate(0,0,"",n);
return res;
}
private:
void generate(int left,int right,string s,int n){ //left right分别表示左括号和右括号的个数
if (right==n) res.push_back(s);
else{
if (left<n) generate(left+1,right,s+"(",n);
if (right<left) generate(left,right+1,s+")",n);
}
}
};