import copy
track = [] # 记录路径
result = [] # 记录结果
def backtrack(track, nums):
if len(track) == len(nums):
result.append(copy.deepcopy(track))
# result.append(track)
return
for i in range(len(nums)):
if nums[i] in track:
continue
# backtrack(track+[nums[i]],nums[:i]+nums[i+1:])
track.append(nums[i])
backtrack(track, nums)
track.remove(nums[i])
return result
print(backtrack([], [1,2,3]))
逻辑:
result = []
def backtrack(路径, 选择列表):
if 满足结束条件:
result.add(路径)
return
for 选择 in 选择列表:
做选择
backtrack(路径, 选择列表)
撤销选择