leetcode-46. 全排列--回溯算法--python
Posted Python_Heaven
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-46. 全排列--回溯算法--python相关的知识,希望对你有一定的参考价值。
全排列问题
使用回溯算法解决
思路:定义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()
以上是关于leetcode-46. 全排列--回溯算法--python的主要内容,如果未能解决你的问题,请参考以下文章