首页 > 代码库 > [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:
"((()))", "(()())", "(())()", "()(())", "()()()"
题目是要生成所有的匹配的括号序列: 左括号和右括号的数目都为n, 序列的任意位置index之前(左边的)的左括号总数都是要大于或者等于右括号总数。
总的序列的数目应该是卡特兰数:h(n)=C(2n,n)/(n+1) (n=0,1,2,...)或者h(n)=c(2n,n)-c(2n,n+1)(n=0,1,2,...)
1 #include <iostream> 2 #include <algorithm> 3 #include <string> 4 #include <vector> 5 using namespace std; 6 7 8 9 void help(int total, int left, int right, string str, vector<string>& svec)10 {11 if(left>total || right>total || right>left)12 return;13 if(total==right&&left==total)14 {15 svec.push_back(str);16 return;17 }18 else19 {20 if(left<total)21 help(total, left+1, right, str+"(", svec);22 if(right<left&&left<=total)23 help(total, left, right+1, str+")", svec);24 }25 }26 27 28 vector<string> generateParenthesis(int n) {29 vector<string> svec;30 help(n, 0, 0, "", svec);31 32 return svec;33 }34 35 36 37 int main()38 {39 vector<string> svec;40 svec=generateParenthesis(3);41 }
[leetcode]Generate Parentheses
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。