首页 > 代码库 > 【leetcode】Generate Parentheses
【leetcode】Generate Parentheses
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:
"((()))", "(()())", "(())()", "()(())", "()()()"
用递归生成所有的括号组合,并且在递归过程中不断剪枝
剪枝的条件:
leftNum>n||rightNum>n||rightNum>leftNum)
1.左、右括号数目大于了n
2.右括号数目大于了左括号数目
1 class Solution { 2 3 public: 4 5 vector<string> generateParenthesis(int n) { 6 7 8 9 vector<string> result;10 11 generate(result,"",0,n,0,0);12 13 return result;14 15 16 17 }18 19 20 21 void generate(vector<string> &result,string tmp,int index,int &n,int leftNum,int rightNum)22 23 {24 25 if(leftNum>n||rightNum>n||rightNum>leftNum)26 27 {28 29 return;30 31 }32 33 if(index==2*n)34 35 {36 37 result.push_back(tmp);38 39 return;40 41 }42 43 44 45 generate(result,tmp+"(",index+1,n,leftNum+1,rightNum);46 47 generate(result,tmp+")",index+1,n,leftNum,rightNum+1);48 49 }50 51 };
【leetcode】Generate Parentheses
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。