全排列问题
使用回溯算法解决
思路:定义res列表存放最后的结果
定义track列表构建排列存放每次的排列
在backtrack函数中,for循环中
1.满足条件,加入res,
2.做选择:track.append(nums[i])
3.回溯函数:backtrack(nums, track)
4. 撤销选择:track.pop()
def permute(nums):
res = []
track = []
len_nums = len(nums)
def backtrack(nums, track):
if len(track) == len_nums:
res.append(track.copy())
return
for i in range(len_nums):
if nums[i] in track:
continue
track.append(nums[i])
backtrack(nums, track)
track.pop()
backtrack(nums, track)
return res
nums = [1, 2, 3]
print(permute(nums))

这里之前用的track,但是没有返回结果,使用track.copy()就正常输出。
track.copy()
该博客探讨了如何运用回溯算法来求解全排列问题。代码示例展示了在Python中如何实现这一算法,通过定义res列表存储最终结果,track列表构建当前的排列,并在backtrack函数中进行递归操作。关键步骤包括在满足条件时将排列加入结果、做出选择、回溯以及撤销选择。注意,为避免丢失结果,需使用track.copy()保存当前排列。
915

被折叠的 条评论
为什么被折叠?



