Python怎么输出数组的所有子集

51次阅读
没有评论

共计 548 个字符,预计需要花费 2 分钟才能阅读完成。

可以使用递归的方法来输出数组的所有子集。具体的实现如下:

def subsets(nums):
    res = []
    backtrack(nums, [], res, 0)
    return res

def backtrack(nums, subset, res, start):
    res.append(subset[:])  # 将当前子集加入结果列表 
    for i in range(start, len(nums)):
        subset.append(nums[i])  # 添加当前元素到子集中 
        backtrack(nums, subset, res, i+1)  # 递归调用下一层,start 参数为 i +1,表示下一个位置从 i + 1 开始 
        subset.pop()  # 回溯,将添加的元素移除 

# 测试 
nums = [1, 2, 3]
print(subsets(nums))

输出结果为:

[[], [1], [1, 2], [1, 2, 3], [1, 3], [2], [2, 3], [3]]

这里使用了回溯法,通过维护一个当前子集的列表 subset,并在每次递归调用之前将当前子集加入结果列表 res 中。然后通过遍历数组中的每个元素,在每个元素的位置上继续递归调用,直到遍历完整个数组。在递归调用的过程中,通过增加一个 start 参数来控制下一次递归的起始位置,从而避免生成重复的子集。

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-13发表,共计548字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)