zoukankan      html  css  js  c++  java
  • Leetcode generate-parentheses(生成括号, DFS)

    题目描述

    给出n对括号,请编写一个函数来生成所有的由n对括号组成的合法组合。
    例如,给出n=3,解集为:
    "((()))", "(()())", "(())()", "()(())", "()()()"
     

    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,注意判断,l==n&&r==n的时候才push,l<n的时候可以加左括号,r<l的时候可以加右括号
    class Solution {
    public:
        vector<string> generateParenthesis(int n) {
            vector<string> res;
            string out;
            DFS(n,0,0,out,res);
            return res;
        }
        void DFS(int n,int l,int r,string &out,vector<string> &res)
        {
            if(l==n&&r==n)
            {
                res.push_back(out);
                return;
            }
            else
            {
                if(l<n)
                {
                    out.push_back('(');
                    DFS(n,l+1,r,out,res);
                    out.pop_back();
                }
                if(l>r)
                {
                    out.push_back(')');
                    DFS(n,l,r+1,out,res);
                    out.pop_back();
                }
            }
        }
    };
  • 相关阅读:
    【js效果】密码的显示和隐藏
    【js效果】竖向折叠二级菜单
    【js效果】单行文字滚动(从左到右)
    mysql:查询排名
    init_bootmem_node
    bootmem_init_node
    for_each_node(node)
    build_mem_type_table
    __vet_atags
    asm-offset.h 生成
  • 原文地址:https://www.cnblogs.com/zl1991/p/12783710.html
Copyright © 2011-2022 走看看