能够解决的问题:
排列
组合
字符串切割
求子集
棋盘问题
模板:
void backtracking(参数) {
if (终止条件) {
存放结果;
return;
}
for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {
处理节点;
backtracking(路径,选择列表); // 递归
回溯,撤销处理结果
}
}
递归函数中可能要考虑的参数:终止条件参数,起始位置参数。