zoukankan      html  css  js  c++  java
  • 递归和回溯_leetcode77-经典的组合

    class Solution(object):
    def combine(self, n, k):
    """
    :type n: int
    :type k: int
    :rtype: List[List[int]]
    """
    self.res = []

    if not n or k > n or k <= 0:
    return self.res

    self.generateCombinations(n,k,1,[])

    return self.res


    # 求解C(n,k) ,当前已经找到的组合存储在c中,需要从start开始搜索新的元素
    def generateCombinations(self,n,k,start,ans):

    if len(ans) == k:
    self.res.append(ans[0:])
    return

    for i in range(start,n+1):

    ans.append(i)
    self.generateCombinations(n,k,i+1,ans)
    ans.pop()



    # 剪支,就是减少 for 循环的上限

    class Solution2(object):
    def combine(self, n, k):
    """
    :type n: int
    :type k: int
    :rtype: List[List[int]]
    """
    self.res = []

    if not n or k > n or k <= 0:
    return self.res

    self.generateCombinations(n,k,1,[])

    return self.res


    # 求解C(n,k) ,当前已经找到的组合存储在ans中,需要从start开始搜索新的元素
    def generateCombinations(self,n,k,start,ans):

    if len(ans) == k:
    self.res.append(ans[0:])
    return

    # 还有k-len(ans)个空位,[i,…,n]中至少还有 k-len(ans)个元素
    # i最多为 n -(k-len(ans)) + 1

    for i in range(start,n-(k-len(ans))+2):

    ans.append(i)
    self.generateCombinations(n,k,i+1,ans)
    ans.pop()
  • 相关阅读:
    Chrony服务同步集群时间
    lsyncd+rsync实时同步
    iptables
    nginx 之 proxy_pass详解
    Ansible 中的 playbook 详解
    MySQL基本查询实战
    MySQL索引
    MySQL高可用方案——双主
    MySQL事务
    MySQL用户和权限管理
  • 原文地址:https://www.cnblogs.com/lux-ace/p/10556973.html
Copyright © 2011-2022 走看看