深度优先搜索实现全排列
"""
利用深度优先算法实现全排列
深度优先的关键在于每一步有哪些可能,满足
一种可能后就往下继续到最后一步完成则往前
回溯其它可能。
dfs(step):
判断边界:执行相关操作,返回
尝试每一种可能 for( i = 1; i <=n; i++):
继续下一步 dfs(step+1)
回溯
"""
import copy
d = {}
result = []
def permutation(li, n):
if 'temp' not in d:
d['temp'] = [''] * len(li)
if 'book' not in d:
d['book'] = [0] * len(li)
book = d['book']
temp = d['temp']
if n == len(li):
result.append(copy.deepcopy(temp))
print(temp)
return
for i in range(len(li)):
if book[i] == 0:
temp[n] = li[i]
book[i] = 1
permutation(li, n + 1)
book[i] = 0
if __name__ == '__main__':
permutation([1, 2, 3], 0)
print(result)