跳转到主要内容

算法

1 篇
  • Python `itertools.permutations` 使用的排列算法

    发布于 长文 4436 字 9 分钟

    算法

    TL;DR:这本质上是一个基于回溯,利用元素交换的递归排列生成算法,但被重写成了循环形式(可能出于效率考量)。 引子 最近在算法复健,刷到了排列相关的题目。恰巧 Python 内置了一个非常实用的工具库 itertools,其中有一个 permutations(iterable, r) 方法,可以对一个给定的 iterable 生成所有大小为 r 的排列,且输出按照字典序排列。 >>> list(permutations('ABCD', 2)) [('A', 'B'), ('A', 'C'), …

    TL;DR:这本质上是一个基于回溯,利用元素交换的递归排列生成算法,但被重写成了循环形式(可能出于效率考量)。 引子 最近在算法复健,刷到了排列相关的题目。恰巧 Python 内置了一个非常实用的工具库 itertools,其中有一个 permutations(iterable, r) 方法,可以对一个给定的 iterable 生成所有大小为 r 的排列,且输出按照字典序排列。 >>> list(permutations('ABCD', 2)) [('A', 'B'), ('A', 'C'), …