[LeetCode]-Generate Parentheses N个括号所有的组合数
2014-08-15 15:31
435 查看
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。但是如果总是从“成对”括号入手,就会想到“栈”等东西,问题就复杂了。如果将左右括号分开来看:当左括号<n时,就能放置新的左括号。当右括号<左括号数时就能放置新的右括号。那么问题就很容易解决了。
class Solution { public: vector<string> generateParenthesis(int n) { vector<string> ret; if(n>0) DFS(n,"",0,0,ret); return ret; } private: //l表示左括号出现的次数,r表示右括号出现的次数 void DFS(int n,string s,int l,int r,vector<string> &ret){ if(l==n){ ret.push_back(s.append(n-r,')')); return; } DFS(n,s+'(',l+1,r,ret); if(r<l)DFS(n,s+')',l,r+1,ret); } };
相关文章推荐
- LeetCode 22 Generate Parentheses(找到所有匹配的括号组合)
- 【leetcode】括号符匹配问题(Parentheses):Valid Parentheses|Generate Parentheses|LongestValid Parentheses
- 生成所有括号匹配情况 Generate Parentheses
- Leetcode:Generate Parentheses 生成有效括号对
- LeetCode22——Generate Parentheses(给定n对括号,然后看有多少正确的括号组合)
- LeetCode--Generate Parentheses(括号组合排列)Python
- Generate Parentheses 产生所有括号组合 @LeetCode
- Leetcode_generate-parentheses
- leetcode -- Generate Parentheses
- LeetCode: Generate Parentheses
- LeetCode Generate Parentheses
- 【题解】【排列组合】【回溯】【Leetcode】Generate Parentheses
- LeetCode题解:Generate Parentheses
- LeetCode21: Generate Parentheses
- LeetCode(22)GenerateParentheses
- Leetcode: Generate Parentheses
- LeetCode Generate Parentheses 深度分析理解
- Leetcode Generate Parentheses
- 数据结构与算法[LeetCode]—找出N个节点的BST的所有形态组合
- 打印出所有可能的括号组合