回溯算法理论基础
# 回溯算法的理论
回溯和递归类似,都不是很高效
回溯法,一般可以解决如下几种问题:
组合问题:N 个数里面按一定规则找出 k 个数的集合
切割问题:一个字符串按一定规则有几种切割方式
子集问题:一个 N 个数的集合里有多少符合条件的子集
排列问题:N 个数按一定规则全排列,有几种排列方式
棋盘问题:N 皇后,解数独等等
回溯法解决的问题都可以抽象为树形结构
# 回溯模板
函数名习惯定义为 backtracking,返回值一般 void,参数根据逻辑需要什么补充什么
回溯函数伪代码如下
void backtracking(参数)回溯函数终止条件
if (终止条件) {...
more...