动态规划:
回溯:
框架:
result = []
def backtrack(路径, 选择列表):
if 满足结束条件:
result.add(路径)
return
for 选择 in 选择列表:
做选择
backtrack(路径, 选择列表)
撤销选择
for 选择 in 选择列表:
# 做选择
将该选择从选择列表移除
路径.add(选择)
backtrack(路径, 选择列表)
# 撤销选择
路径.remove(选择)
将该选择再加入选择列表
栗子:
class Solution:
def __init__(self):
self.res = []
def permute(self, nums):
self.backTrack(nums, [])
return self.res
def backTrack(self, nums, track):
if len(nums) == len(track):
self.res.append(track[:])
return
for i in nums:
if i in track:
continue
track.append(i)
self.backTrack(nums, track)
track.remove(i)
