我需要n
在蛮力算法中获得长度可迭代的所有排列。我不想使用itertools
或任何其他外部包。
我想我可以使用堆的算法,但我的代码只返回一个重复 n 的排列!次:
def permutations(l):
n = len(l)
result = []
c = n * [0]
result.append(l)
i = 0;
while i < n:
if c[i] < i:
if i % 2 == 0:
tmp = l[0]
l[0] = l[i]
l[i] = tmp
else:
tmp = l[c[i]]
l[c[i]] = l[i]
l[i] = tmp
result.append(l)
c[i] += 1
i = 0
else:
c[i] = 0
i += 1
return result
我不明白为什么会这样。我还试图弄清楚是否有更有效的方法来做到这一点,也许是使用递归函数。