python - 关于从n个元素中找出m个元素的所有组合的算法分析问题

标签 python algorithm

我正在用 Python 编写一个算法,从 n 个元素中找出 m 个元素的所有组合。

我看过评论但没有评论,所以我很难理解这个问题。

当 n = 7 时,代码的结果是 (0,1,2,3), (0,1,2,4) ... (3,4,5,6)。

但是我对 picked 和 to_pick 在代码中的作用有歧义。

代码

def pick(n, picked, to_pick):
    if to_pick is 0:
        return print(picked)

    if len(picked) is 0:
        smallest = 0
    else:
        smallest = picked[-1] + 1

    for next in range(smallest, n):
        picked.append(next)
        pick(n, picked, to_pick - 1)
        picked.pop()


if __name__ == '__main__':
    result = list()
    pick(7, result, 4)

最佳答案

picked 是当前选择的有序结果组合
to_pick 是进行完全组合所需的元素数

想象一下中间级别 - 例如,您有 picked=[1,2] ,所以 to_pick 是 2(还需要 2 个元素),您可以从 3..7 范围中获取下一个元素

注意小的逻辑缺陷——如果你现在选择 7,你无法进行下一步并获得完整的 4 项组合(只是过多的空调用),因此将 for 循环的上限限制为 n - to_pick

关于python - 关于从n个元素中找出m个元素的所有组合的算法分析问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55368464/

相关文章:

python - Tox 在一个 repo 克隆中运行良好,但在另一个中运行良好

python - 通过 ssh 连接时从模块 numpy 导入时来自 python 的错误消息

c++ - 需要更快地计算(近似)方差

python - 我如何测量我的算法在整个运行过程中所花费的时间?

Java BFS 算法 - 尝试在 JPanel 上绘制节点

c++ - 找到最接近给定素数列表的因素的数字

python - 操作系统错误: [WinError 193] %1 is not a valid Win32 application (LibTiff)

python - 无限递归向从 UTC 创建的 SimpleDate python 对象添加天数

python - 从 Url 参数过滤 Django ModelViewSet 列表

algorithm - 图像失真算法的错误行为