Python 算法教程(41):回溯算法框架详解
前言
回溯算法是解决组合、排列、子集问题的通用框架。
一、回溯框架
def backtrack(路径,选择列表):
if 满足结束条件:
result.add(路径)
return
for 选择 in 选择列表:
做选择
backtrack(路径,选择列表)
撤销选择
二、全排列问题
def permute(nums):
result = []
def backtrack(path, remaining):
if not remaining:
result.append(path[:])
return
for i in range(len(remaining)):
path.append(remaining[i])
backtrack(path, remaining[:i] + remaining[i+1:])
path.pop()
backtrack([], nums)
return result
三、复杂度
时间:O(n!),空间:O(n)
四、LeetCode 实战
46. 全排列、78. 子集
总结
掌握回溯框架,解决排列组合问题。
下一篇:组合总和问题
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。







