回溯(dfs)
result = []
def backtrack(路径, 选择列表):
if 满足结束条件:
result.add(路径)
return
for 选择 in 选择列表:
做选择
backtrack(路径, 选择列表)
撤销选择
由递归函数的定义可以看见,【路径】是函数的形参,随着函数的入栈在不停地添加值,或出栈而删除值,路径就像一根触手,去试探地触摸每一个结点(做决策),如果不满足要求,则将触手收回来,去摸另一个结点,因为这种回收动作的特性,这种方法称之为回溯。