leetcode: Generate Parentheses
2013-10-28 18:17
169 查看
http://oj.leetcode.com/problems/generate-parentheses/
思路:
对于第k个元素,考虑以下两种情况:
前k - 1个元素中'('出现次数小于n,第k个元素可以是'('。
前k - 1个元素中')'出现的次数小于'(',第k个元素可以是')'。
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: "((()))", "(()())", "(())()", "()(())", "()()()"
思路:
对于第k个元素,考虑以下两种情况:
前k - 1个元素中'('出现次数小于n,第k个元素可以是'('。
前k - 1个元素中')'出现的次数小于'(',第k个元素可以是')'。
class Solution { public: void internalGenerateParenthesis(vector<string> & result, string &s, int n, int left_num, int right_num) { if ((n == left_num) && (n == right_num)) { result.push_back(s); } if (left_num < n) { s.push_back('('); internalGenerateParenthesis(result, s, n, left_num + 1, right_num); s.pop_back(); } if (right_num < left_num) { s.push_back(')'); internalGenerateParenthesis(result, s, n, left_num, right_num + 1); s.pop_back(); } } vector<string> generateParenthesis(int n) { vector<string> result; string s; internalGenerateParenthesis(result, s, n, 0, 0); return result; } };
相关文章推荐
- LeetCode 22 Generate Parentheses
- leetcode 22 Generate Parentheses
- LeetCode_Generate Parentheses
- Generate Parentheses -- LeetCode
- [Java]LeetCode22 Generate Parentheses
- 【leetcode】Generate Parentheses
- 【leetcode】Generate Parentheses
- leetcode (22) - Generate Parentheses
- LeetCode 22 Generate Parentheses (C,C++,Java,Python)
- 【leetcode】括号符匹配问题(Parentheses):Valid Parentheses|Generate Parentheses|LongestValid Parentheses
- 【leetcode】Generate Parentheses
- LeetCode 22 — Generate Parentheses(C++ Java Python)
- leetcode-Generate Parentheses (2014.4.18)
- LeetCode | Generate Parentheses
- leetcode之 Generate Parentheses
- 【leetcode】Generate Parentheses 算法解析
- [leetcode] Generate Parentheses
- leetcode-22 Generate Parentheses
- 算法分析与设计——LeetCode Problem.22 Generate Parentheses
- Leetcode: Generate Parentheses