我的输入是 A = [ 2,3,4,1]
输出只是 A 中元素的所有可能排列,可以通过单次换位(两个相邻元素的单次翻转)操作完成。所以输出是:
[3,2,4,1],[ 2,4,3,1],[2,3,1,4],[1,3,4,2]
如何在 Python 中执行此操作?和/或C?
编辑
允许循环转置。因此 [2,3,4,1]
==> [1,3,4,2]
是允许的并且是一个有效的输出。
最佳答案
A = [2,3,4,1]
res = []
for i in range(len(A)):
temp = A[:]
temp[i], temp[i-1] = temp[i-1], temp[i]
res.append(temp)
print res
结果:
[[1, 3, 4, 2], [3, 2, 4, 1], [2, 4, 3, 1], [2, 3, 1, 4]]
关于python - 从 Python 和 C 中的列表中找到一个转置排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27657541/