22. Generate Parentheses
2016-04-05 16:49
369 查看
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
心中有树就能写好dfs
x表示左括号的数量,y表示右括号的数量。......反正也没人看自己看 就随便写写吧。
原问题可以转换成求 (0,0)到(n,n) 路径。条件得满足x>=y
如果加一个左括号(0,0)->(1,0) 再加一个 右括号(1,0)->(1,1)
那么最终 能得到的合法序列就是一条从(0,0)到(n,n)的路径,我们把这条路径就录下来就可以了。
为了方便理解 上个图
如图 红线标记的路径,向上走一步添加一个左括号,向右走一步添加一个右括号。
For example, given n = 3, a solution set is:
"((()))", "(()())", "(())()", "()(())", "()()()"
特殊的姿势进行dfs
心中有树就能写好dfs
class Solution { public: void dfs(int n,string s,int x,int y,vector<string>&v){ if(y==n){ v.push_back(s); return ; } if(x<n)dfs(n,s+'(',x+1,y,v); if(x>y)dfs(n,s+')',x,y+1,v); } vector<string> generateParenthesis(int n) { vector<string>v; string s=""; dfs(n,s,0,0,v); return v; } };
x表示左括号的数量,y表示右括号的数量。......反正也没人看自己看 就随便写写吧。
原问题可以转换成求 (0,0)到(n,n) 路径。条件得满足x>=y
如果加一个左括号(0,0)->(1,0) 再加一个 右括号(1,0)->(1,1)
那么最终 能得到的合法序列就是一条从(0,0)到(n,n)的路径,我们把这条路径就录下来就可以了。
为了方便理解 上个图
如图 红线标记的路径,向上走一步添加一个左括号,向右走一步添加一个右括号。
相关文章推荐
- DataTable转化为List
- Android_studio安装步骤
- jQuery Modal bootstrap风格对话框插件
- 沈大海38节jquery强化教程2016视频下载
- Educational Codeforces Round 10——B. z-sort
- Android Studio 快捷键
- Android 防止控件被重复点击,多次提交
- 分页显示数据
- [Hnoi2006]马步距离 (贪心+A*)
- 完整版的strcpy函数
- 火狐 firefox proxy moz=proxy:// 407错误 解决办法
- IDEA 导入 eclipse 的项目出现\65279错误的解决
- php and js to facebook登陆 最佳实践
- 面向对象七大设计原则
- 欢迎使用CSDN-markdown编辑器
- [置顶] java IO 问题分析
- 现代控制理论思考题----倒立摆小车控制算法研究
- QLineEdit的IP格式输入
- H264码率设置 在手机中的设置.
- 现代控制理论思考题----倒立摆小车控制算法研究