您的位置:首页 > 其它

LeetCode---Generate Parentheses

2015-12-08 11:24 513 查看
题目大意:给出一个非负整数n,表示有n对括号,输出其所有合法的括号排列。

算法思想:

一步一步的构造括号序列。依据两个原则:1.当做扩号数小于N时可以添加左括号;2.当右括号数大于N时可以添加有括号。最后当左括号数等于N时表明产生一个合法排列,将括号补充完整。采用深度优先搜索找出所有可行方案。

代码如下:

class Solution {
public:
vector<string> generateParenthesis(int n) {
vector<string> res;
if(n>0) dfs(n,"",0,0,res);
return res;
}
void dfs(int n,string s,int l,int r,vector<string>&res){
if(l==n){
res.push_back(s.append(l-r,')'));
return ;
}
dfs(n,s+'(',l+1,r,res);
if(r<l)
dfs(n,s+')',l,r+1,res);
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: