回溯法逐步构建候选解决方案,一旦部分候选无法导向有效解决方案,就立即放弃该候选(回溯)。它通过 DFS 系统地探索解空间,修剪死路。
思想
选择 -> 探索 -> 撤销选择。尝试一个选项,递归;如果失败,撤销并尝试下一个。
示例:所有排列
python
():
result = []
():
remaining:
result.append(path[:])
i ((remaining)):
path.append(remaining[i])
backtrack(path, remaining[:i] + remaining[i+:])
path.pop()
backtrack([], nums)
result
permutations([, , ])
