理论基础
1、解决的问题:
大概就是需要搜索枚举出满足条件的所有可能方案的问题,可以使用回溯法,例如,
满足条件的所有组合(数量)、字符串切割(满足条件的切割方式有几种)、满足条件的所有子集(数量)、棋盘问题(N皇后、解数独问题)
2、回溯/递归:将抽象问题理解为一个树形结构(N叉树)
3、代码模板:
回溯三要素(和递归三要素基本相似):
①输入输出参数
②终止条件
③遍历过程(每层要做的操作)
回溯是递归的双生,回溯相当于是递归遍历完,在枚举下一种组合时,保持前面的部分不变,只改变最后一个环节直到不再会再生变化,一直往前回溯(类似概率论枚举法的列举逻辑)