题目描述
给出n对括号,请编写一个函数来生成所有的由n对括号组成的合法组合。
例如,给出n=3,解集为:
"((()))", "(()())", "(())()", "()()()", "()(())",
示例1
输入
1
输出
["()"]
class Solution {
public:
/**
*
* @param n int整型
* @return string字符串vector
*/
void dfs(vector<string> &res, int left, int right, string cur){
if(left ==0 && right==0)
res.push_back(cur);
if(left>0)
dfs(res, left-1, right, cur+'(');
if(right>0 && right>left)
dfs(res, left, right-1,cur+')');
}
vector<string> generateParenthesis(int n) {
// write code here
vector<string> res;
if(n<1) return res;
string cur = "";
dfs(res, n, n, cur);
return res;
}
};
本文介绍了一个使用递归深度优先搜索算法生成所有可能的合法括号组合的方法。对于给定的正整数n,该算法能够生成所有由n对括号组成的合法组合。文章通过具体的示例展示了如何使用C++实现这一功能。
3420

被折叠的 条评论
为什么被折叠?



