s = 'ABCD'
def permutations(p,s,e):
if s == e:
print p
else:
for i in range(s,e+1):
p[s],p[i] = p[i],p[s]
permutations(p,s+1,e)
p[s],p[i] = p[i],p[s]
permutations(s,0,3)
n = len(s)
visit = [False] * n
permut = [-1] * n
pos = 0
def dfs(depth):
global pos
if depth >= n:
print permut
else:
for i in range(0,n):
if not visit[i]:
visit[i] = True
permut[pos] = s[i]
pos += 1
dfs(depth + 1)
visit[i] = False
pos -= 1
dfs(0)
n = len(s)
visit = [False] * n
permut = [-1] * n
def dfs(depth):
for i in range(0,n):
if not visit[i]:
visit[i] = True
permut[depth] = s[i]
if depth == n - 1:
print permut
else:
dfs(depth + 1)
visit[i] = False
dfs(0)
递归:普通全排列
于 2018-10-06 16:43:12 首次发布