为了账号安全,请及时绑定邮箱和手机立即绑定

使用递归查找所有 k 个子集

使用递归查找所有 k 个子集

慕桂英3389331 2021-09-11 19:30:43
我正在尝试找到一种方法来创建一个递归算法,该算法将给出一组数字 (0 -> n) 的所有 k 长度子集,但我无法将列表作为参数发送给函数。最终我想返回一个列表列表我想从最后开始,使用某种DP。我尝试过的所有东西都没有接近它
查看完整描述

1 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

首先处理最后一个元素 ( n-1) 允许您不使用给定的函数签名传递中间结果:


def subsets(n, k):

    if n < k or k < 0:

        return []

    if k == n:

        return [list(range(k))]

    return subsets(n-1, k) + [s+[n-1] for s in subsets(n-1, k-1)]


>>> subsets(3, 2)

[[0, 1], [0, 2], [1, 2]]

>>> subsets(4, 2)

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

>>> subsets(4, 3)

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


查看完整回答
反对 回复 2021-09-11
  • 1 回答
  • 0 关注
  • 212 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信