生成n对括号的合法全排列:

  给定一整数N,输出N对括号的合法全排列

例:

  2

  3

  ()()

  (())

  

  ()()()

  (())()

  ()(())

  ((()))

分析:

  很经典的需要迭代来进行实现。

  迭代的关键在于找到跳出迭代的条件,以及每次迭代的策略。

  出口:

    此题,迭代,每次只能画括号的一半,故而出口为,左边括号剩余和右边括号剩余均为0;

  每次迭代策略:

    如代码所示。

代码实现:

 1 import java.util.Scanner;
 2 import java.util.Stack
 3 public class Main {
 4     public static void main(String []args){
 5         Scanner sc =new Scanner(System.in);
 6         while(sc.hasNext()){
 7             int m =sc.nextInt();
 8             Stack<String> s  =new Stack<String>();
 9             String n ="";
10             generate(m , m, n);
11         }
12     }
13     public static void generate(int leftNum,int rightNum,String s)
14     {
15         if(leftNum==0&&rightNum==0)
16         {
17             System.out.println(s);
18         }
19         if(leftNum>0)
20         {
21             generate(leftNum-1,rightNum,s+'(');
22         }
23         if(rightNum>0&&leftNum<rightNum)
24         {
25             generate(leftNum,rightNum-1,s+')');
26         }
27     }
28 }

Java Code

转载于:https://www.cnblogs.com/zdtiio/p/5921576.html

生成n对括号的合法全排列相关推荐

  1. 问加几个括号变合法序列

    链接:登录-专业IT笔试面试备考平台_牛客网 题目描述 康康刚学习编程,一天教程序设计的刘老师给他出了个问题,并跟他说做不完不能走!康康看到题目傻眼了,这我哪会做啊,于是偷偷通过QQ把题目发给了你,希 ...

  2. 数据结构与算法 / 编辑器和编译器如何判定括号是否合法

    一.整体思路 使用栈这种数据结构. 遍历字符串,遇到左括号则入栈,遇到右括号则判断此时的栈顶的括号是否和右括号对应,如果是则 pop 栈顶:如果不是则直接可以判定该字符串中括号不匹配. 二.栗子 #i ...

  3. 【JavaScript】手撕前端面试题:事件委托 | 判断URL是否合法 | 全排列

  4. 视觉算法工作一年社招经历总结

    视觉算法工作一年社招经历总结 视觉算法从被裁历时两个月拿到offer的经历复盘(本人情况是硕士毕业工作经验不到一年半的社招) 总体时间线: 9.30被裁,大概9.21知道消息,拿到n+1 10.1开始 ...

  5. 递归/回溯:Generate Parentheses生成合法括号

    已知n组括号,开发一个程序,生成这n组括号所有的合法的组合可能. 例如:n = 3 结果为: ["((()))", "(()())", "(())() ...

  6. 编写一个能够排序的函数模板。_LeetCode刷题——9.给出n对括号,请编写一个函数来生成所有的由n对括号组成的合法组合...

    难度(medium) 题目描述: 给出n对括号,请编写一个函数来生成所有的由n对括号组成的合法组合.例如n=3,解集为:  "((()))", "(()())" ...

  7. 递归方式-全排列生成算法

    http://blog.csdn.net/xiazdong/article/details/7986015 排列:从n个元素中任取m个元素,并按照一定的顺序进行排列,称为排列: 全排列:当n==m时, ...

  8. 算法 --- 递归生成括号

    问题描述 思路: 1.首先生成n个括号 2.左括号数量(记为l)不超过n 3.右括号数量(记为r)不超过n,且优先生成左括号(即 l < r) 4.需要设计一个递归式h(str,l,r) // ...

  9. 算法题目——生成括号匹配

    题目链接:剑指offer.85 生成 n 对括号共需要 2n 步,每一步都面临两个选项,即生成左括号或者右括号,题目要求返回所有的情况,所以本问题很适合采用回溯法. 在生成左右括号时存在两个限制条件, ...

最新文章

  1. 【算法学习】堆排序建立最大堆
  2. python简单的爬虫教程中召唤小海龟_Python练习,网络小爬虫(初级)
  3. 兼容所有浏览器的CSS3圆角效果
  4. findbugs教程
  5. 看过这么多爆文,依旧走不好异步编程这条路?​
  6. 在龙芯上调试CoreCLR
  7. 通过DBLINK跨数据库查询,同步创建表结构,插入表数据
  8. uC/OS-II 一些函数简介
  9. 爬取CSDN博客文章,统计文章历史数据
  10. idea 格式化vue代码,检查语法
  11. 黑苹果hd3000显存3m_加装黑苹果生产力翻倍,E3 神机规模升级再战五年
  12. html5 cuplayer,PlayerLite免费flv与mp4网页视频播放器
  13. 数据科学风云之互联网金融
  14. 祝贺swm8023刷HDU-Steps登顶+突破新Section,14.2不是传说中的高级计算几何,而是数学~~...
  15. java 校验银行卡号_Java之——基于Luhn算法的银行卡卡号的格式校验
  16. iOS 16 NSTextContentStorage locationFromLocation:withOffset: 崩溃问题
  17. 最新虚拟机SAP ECC6.0 EHP7带示例数据IDES版+BW740
  18. 源码推荐 VVebo剥离的TableView绘制
  19. 服务器硬盘掉线问题解决
  20. PGA内存空间的分配与回收

热门文章

  1. [win7] 去除将窗口拖到屏幕边缘时“自动最大化”
  2. VIM自动格式化C代码
  3. 什么是反射(.NET)[转]
  4. c/c++面试试题(三)
  5. axios的content-type是自动设置的吗?
  6. [html] 如何使用html5进行图片压缩上传?
  7. [css] 使用css实现对话气泡的效果
  8. 工作132:页面布局
  9. 前端学习(2569):如何跨组件调用实例
  10. 前端学习(1917)vue之电商管理系统电商系统之绘制面包屑导航和卡片视图调用api获取数据