首页 > 代码库 > LeetCode: Generate Parentheses 题解
LeetCode: Generate Parentheses 题解
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
"((()))", "(()())", "(())()", "()(())", "()()()"
题解: 很容易想到DFS, 采用递归的方式进行,比较难把握的是每次递归的结果用什么来存储,终止条件是什么。
需要注意的是,在每次递归的时候剩余左括号不可能比右括号多,否则就终止。
1 class Solution { 2 public: 3 vector<string> vi; 4 void generateOne(int left,int right,string s) 5 { 6 if(left==0) 7 { 8 vi.push_back(s+string(right,‘)‘)); 9 return ;10 }11 if(left>=right)12 generateOne(left-1,right,s+‘(‘);13 else14 {15 generateOne(left-1,right,s+‘(‘);16 generateOne(left,right-1,s+‘)‘);17 }18 }19 vector<string> generateParenthesis(int n) {20 int left=n,right=n;21 vi.clear();22 generateOne(n,n,"");23 return vi;24 }25 };
转载请注明出处: http://www.cnblogs.com/double-win/ 谢谢!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。