zoukankan      html  css  js  c++  java
  • Generate parentheses,生成括号对,递归,深度优先搜索。

    问题描述:给n对括号,生成所有合理的括号对。比如n=2,(()),()()

    算法思路:利用深度优先搜索的递归思想,对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);
            }
        }
  • 相关阅读:
    git分支管理策略
    git解决冲突
    git分支创建和合并
    git连接远程库
    git删除文件
    git撤销修改
    4k测试网站
    Windows10通过TightVNC远程连接Ubuntu18.04
    robot报告合并输出
    python 传参中的*和**
  • 原文地址:https://www.cnblogs.com/masterlibin/p/5543487.html
Copyright © 2011-2022 走看看