1 算法模板
for 选择 in 选择列表:
# 做选择
将该选择从选择列表移除
路径.add(选择)
backtrack(路径, 选择列表)
# 撤销选择
路径.remove(选择)
将该选择再加入选择列表
2 代码示例
class Solution:
def __init__(self):
self.res = []
def backtrack(self, used, nums, num):
# base case
if len(num) == len(nums):
self.res.append(num[:])
return
# 状态选择
for i in range(len(nums)):
# 已访问标记
if used[i]:
continue
# 做选择
num.append(nums[i])
used[i] = True
# 进入下一轮决策树
self.backtrack(used, nums, num)
# 撤销选择
used[i] = False
num.pop()
def permute(self, nums: List[int]) -> List[List[int]]:
# 标记访问路径
used = [False] * len(nums)
# 存储路径
num = []
self.backtrack(used, nums, num)
return self.res
标签:选择,used,nums,self,backtrack,----,num,回溯,LeetCode
From: https://www.cnblogs.com/liuyechang/p/17466941.html