解决的问题
- 组合问题
- 切割问题
- 子集问题
- 排列问题
- 棋盘问题
代码模板
void backTracking(参数){
if(终止条件){
收集结果;
return
}
for(遍历集合元素){
处理节点;
递归函数;
回溯操作;
}
return
}
res = []
path = []
def backtrack(未探索区域, res, path):
if 未探索区域满足结束条件:
res.add(path) # 深度拷贝
return
for 选择 in 未探索区域当前可能的选择:
if 当前选择符合要求:
path.add(当前选择)
backtrack(新的未探索区域, res, path)
path.pop()
题目
- 子集
- 子集 II
- 目标和