zoukankan      html  css  js  c++  java
  • 求幂集(数组的所有子集)

    幂集:集合中所有可能的元素组合,包括空集
    对于任意一个子集,集合中的元素只有两种状态,在这个子集中或者不在这个子集中,因此我们可以用二叉树来表示这种状态
    左子树代表保留该元素,右子树代表舍弃该元素
    如 集合 [1,3,4]
    []
    1 []
    1,3 1 3 []
    1,3,4 1,3 1,4 1 3,4 3 4 []
    这棵树的层数是n+1

    代码部分我当时理解起来蛮费劲的,主要还是通过回溯法。
    建立数组subset存储子集,初始为空,代表根节点。分别对subset进行添加元素(保留操作)和不添加元素(舍弃元素)进行深度优先搜索。
    给出代码 python
     1 class Solution:
     2 
     3     def findSubsequences(self, nums):
     4         res = []
     5         def dfs(x,subset):
     6             if x>=len(nums):
     7                 res.append(subset[:])
     8                 return
     9             subset.append(nums[x])
    10             dfs(x+1,subset)
    11             subset.pop()
    12             dfs(x+1,subset)
    13         dfs(0,[])
    14         return res
    15 if __name__ == '__main__':
    16     s = Solution()
    17     res = s.findSubsequences([1,2])
    18     print(res)
  • 相关阅读:
    Vue过滤器使用
    vue基础
    lesson
    lesson
    lesson
    lesson
    rm 命令详解
    alias 命令详解
    cd 命令详解
    cut 命令详解
  • 原文地址:https://www.cnblogs.com/bianque/p/13561190.html
Copyright © 2011-2022 走看看