题目描述
给出一个数组,将其按字典序形成全排列。
例如给出:a[] = {0,1,2};
结果为rs = [[0,1,2],[0,2,1],[1,0,2],[1,2,0],[2,0,1],[2,1,0]]
算法
在选择当前数字(第cur个)时,需选择0:cur-1中未出现的数字。再继续选择cur+1个数字。递归实现。
python实现
def permutation(a,n,cur):
b = a.copy()
//踩坑!!!如果不使用copy,结果会显示只递归了一次,可能是因为直接对a进行修改
if n==cur:
rs.append(b)
else:
for i in range(n):
if i not in b:
b[cur] = i
permutation(b,n,cur+1)
rs = []
n = 3
permutation([None]*n,n,0)