LeetCode 22 Generate Parentheses(生成括号)
2015-11-10 22:41
513 查看
翻译
给定一个括号序列,写一个函数用于生成正确形式的括号组合。 例如,给定n = 3,一个解决方案集是: "((()))", "(()())", "(())()", "()(())", "()()()"
原文
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: "((()))", "(()())", "(())()", "()(())", "()()()"
代码
class Solution { public: vector<string> result; vector<string> generateParenthesis(int n) { generate(0, 0, "", n); return result; } void generate(int left, int right, string s, int n) { if(right == n) { result.push_back(s); } else { if(left < n) { generate(left + 1, right, s + "(", n); } if(right < left) { generate(left, right + 1, s + ")", n); } } } };
我自己写的是用排列组合加上第20题的代码,有些繁琐不如上面的解法,为了更直观的理解这个递归的过程,就画了下面这个示意图。轻拍……
相关文章推荐
- JavaScript学习笔记三
- 诚风老师-十年了,当年那帮做直销的穷小子都成了富豪
- The hidden implementation(被隐藏的具体实现)
- scanf注意事项
- SDWebImage
- leetcode 49:Group Anagrams
- 进击的KFC:UI(一)UIView及其子类
- python学习笔记(1)
- longestSubstring
- HDU 4739 Zhuge Liang's Mines(DP)
- /etc/fstab 只读无法修改的解决办法
- Android Studio 简单设置
- 高斯混合模型EM算法
- 4个Linux服务器监控工具
- Shiro使用和源码分析---6
- Java Spring的IoC和AOP的知识点速记
- JavaScript笔记二
- Java objectOutputStream的用法
- [kuangbin带你飞]专题一 简单搜索M - 非常可乐(HDU 1495)
- 【线性代数公开课MIT Linear Algebra】 第十九课 行列式的公式