Generate parentheses,生成括号对,递归,深度优先搜索。
2016-05-30 18:13
316 查看
问题描述:给n对括号,生成所有合理的括号对。比如n=2,(()),()()
算法思路:利用深度优先搜索的递归思想,对n进行深度优先搜索。边界条件是n==0;前面电话号组成字符串也是利用dfs。
算法思路:利用深度优先搜索的递归思想,对n进行深度优先搜索。边界条件是n==0;前面电话号组成字符串也是利用dfs。
public List<String> generateParenthesis(int n) { List<String> result = new ArrayList<>(); dfs(result,"",n,n); return result; } public void dfs(List<String> result, String s, int left, int right)//n个左括号,n个右括号 { if(left > right)//右括号比左括号多,无法生成。直接返回。截枝。 { return; } if(left == 0 && right == 0)//递归的边界条件。 { result.add(s); } if(left > 0) { dfs(result, s+"(", left-1, right); } if(right > 0) { dfs(result, s+")", left, right-1); } }
相关文章推荐
- 汇编语言(王爽 第三版)实验十
- codeblocks常用快捷键
- jQuery中的通配符选择器使用总结
- manacher板子
- 表格的示例
- 如果你很累,那么你肯定哪里做错了
- 卷积和动态规划的简单测试程序
- spark 客户端和集群模式的区别
- Golang defer 使用时的坑
- 滴天髓之知命
- oracle 性能优化建议小结
- 调用百度apiStore的天气 自动获取地址 及本地天气
- Git入门就是这么简单
- css 重置样式
- sort-list(Leetcode)
- Java 关键字之this
- valign属性
- soj 4526 不重叠最短路条数
- Java中finalize()用法
- 获取ICommand的图片