Generate Parentheses
来源:互联网 发布:java开发年终总结范文 编辑:程序博客网 时间:2024/05/23 17:51
好久没写博客,前几天和Cindy_niu 聊了一下,发现自己确实懒惰了,刚好她那里很多题目,我也抄一份来做做,本来想从第一篇开始更起,但是看到文章很多,十天半个月追不上最新版,还是倒叙吧~
题目:点击打开链接
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:
"((()))", "(()())", "(())()", "()(())", "()()()"
重新整理一下,题目的要求是给出n值,算出全部可能的排列,并列出来,
n<0 无效
n=0时 组合为空
n=1时 () 组合数P为1,这里我们规定组合数为可列出的总数
n=2时 最外面的两个括号是( ~ ) 中间可以是(),也可以是)( 组合数P为2
.....
n=k时 假设 有组合数为 P 其中,输出解决方案 SolutionK[P];
n=k+1时 最外面两个括号必然是(~),分情况讨论
1、如果第二个括号是(,那么倒数第二个必然是),这就是n=k的情况
2、如果第二个是),倒数第二个必然是( ,那么去头去尾,这就是n=k-1的情况
此时,Solution(K+1)[P]就是“(”+SolutionK[P]+“)”和“()”+Solution(K-1)[P]+“()”的数组合并了,复制过来,加头加尾就行了
java递归实现
public String[] GenParenttheses(int n)throws UnsupportedOperationException{if(n<=0)throw new UnsupportedOperationException("unsupport exception");if( n == 1){String[] res=new String[] {"()"};return res;}else{String[] p= {"()" , ")("};String[] res =Gen(p,n-1);for(int i=0;i<res.length;i++){res[i] = left + res[i]+ right; }return res;}}private static String left = "(";private static String right =")";private String[] Gen(String[] p,int n){if(n >1){p = Gen(p,n-1);String[] np = new String[2*p.length];for(int i=0;i<p.length;i++){np[2*i] = left+p[i]+right;np[2*i+1] = right+p[i]+left;}return np;}return p;}
0 0
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- 完整类实现:构造,析构,遍历二叉树
- 关于在MyEclipse中查看SVN服务器上的历史版本文件内容乱码的问题
- Activity的四种启动模式
- Rundll/Rundll32
- gradle学习(12)-groovy一些基础语法
- Generate Parentheses
- python学习笔记(一)
- 继明哥的否定之后,java泰又出新作!明哥接码!
- GCC -fno-omit-frame-pointer
- 为Flex Datagrid添加复选框列
- 数据结构课程设计 题目 1 (活期储蓄管理系统)
- 春天来了
- SSH端口转发功能
- Python学习笔记(二)