小编Eve*_*dam的帖子

堆的算法置换生成器

我需要迭代一组整数的排列.必须通过在每一步交换一对元素来生成订单.

我找到了用于Heap算法的维基百科文章(http://en.wikipedia.org/wiki/Heap%27s_algorithm),它应该这样做.伪代码是:

procedure generate(n : integer, A : array of any):
    if n = 1 then
        output(A)
    else
        for i := 1; i ? n; i += 1 do
            generate(n - 1, A)
            if n is odd then
                j ? 1
            else
                j ? i
            swap(A[j], A[n])
Run Code Online (Sandbox Code Playgroud)

我试图在python中为此编写一个生成器:

def heap_perm(A):
    n = len(A)
    Alist = [el for el in A]
    for hp in _heap_perm_(n, Alist):
        yield hp


def _heap_perm_(n, A):
    if n == 1:
        yield A
    else:
        for …
Run Code Online (Sandbox Code Playgroud)

python algorithm permutation

9
推荐指数
1
解决办法
8259
查看次数

标签 统计

algorithm ×1

permutation ×1

python ×1