zoukankan      html  css  js  c++  java
  • Leetcode练习(Python):回溯算法类:第22题:括号生成:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

    题目:

    括号生成:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

    思路:

    使用回溯算法,使用回溯算法的模板可以很快的求解。

    程序:

    class Solution:
        def generateParenthesis(self, n: int) -> List[str]:
            if n <= 0:
                return []
            if n == 1:
                return ["()"]
            result = []
            def backtrack(Curr, left, right):
                if right == n:   #满足结束条件
                    result.append(''.join(Curr))
                    return
                if left < n:
                    Curr.append("(")  #做出选择
                    backtrack(Curr, left + 1, right)  #路径,选择列表
                    Curr.pop() #撤销选择
                if right < left:
                    Curr.append(")")
                    backtrack(Curr, left, right + 1)
                    Curr.pop()
            backtrack([], 0, 0)
            return result
  • 相关阅读:
    代码习惯
    全网最详细的fhq treap (非旋treap)讲解
    按位或「HAOI2015」
    列队「NOIP2017」
    愤怒的小鸟「NOIP2016」
    能量传输「CSP多校联考 2019」
    矿物运输「CSP多校联考 2019」
    普通打击「CSP多校联考 2019」
    普通快乐「CSP多校联考 2019」
    BZOJ4385: [POI2015]Wilcze doły
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12855782.html
Copyright © 2011-2022 走看看