Life is short,use python!
1、自己写算法实现
#coding=utf-8
def genPermutation(n):
listResult = [[1]]
for curIdx in range(2, n+1):
listTemp = []
for listData in listResult:
for data_idx in range(len(listData)+1):
s = list(listData)
s.insert(data_idx, curIdx)
listTemp.append(s)
pass
listResult = listTemp
listResult.reverse()
for item in listResult:
for data in item:
print data,
print
pass
print "result num = %d"%len(listResult)
if __name__=="__main__":
genPermutation(3)
输出
1 2 3
1 3 2
3 1 2
2 1 3
2 3 1
3 2 1
result num = 6
原理,n阶全排列是在n-1阶全排列的基础上从0,到n-1每个位置插入进去。
例如:
2阶全排列:
1 2
2 1
在0, 1, 2的位置插入3,变成3阶全排列
1 2 3
1 3 2
3 1 2
2 1 3
2 3 1
3 2 1
2、itertools函数实现
#coding=utf-8
import itertools
if __name__=="__main__":
for i in itertools.permutations('1234',4):
print ''.join(i)