基础:模板的重要性
void backtracking(参数)
if 终止条件):
存放结果
return
for 选择:本层集合中元素(树中节点孩子的数量就是集合的大小)
处理节点
backtracking(路径,选择列表)
回溯,撤销处理结果
比起直接思考模板,不如从题目中见分晓
77. 组合
def backtracking(tmp, h, j):
if h == k:
ans.append(tmp)
return
for i in range(j, long):
backtracking(tmp + [b[i]], h + 1, i + 1)
tmp表示函数传递的临时数组,h表深度,当深度达到k值,将tmp添加到ans然后返回即可。
利用j进行剪枝,可以保证不会出现重合数组。