//一定要分成横纵两个方面思考回溯
void backtracking(参数) {
if (终止条件) {
存放结果;
return;
}
for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {//注意i=0,i=start的区别
处理节点;
(这里可以有剪枝:if(超出范围)return,让for后面的不用再判断)
(这里可以有选择:如将子答案加入答案的链表)
backtracking(路径,选择列表); // 递归 注意(i)和(i++)的区别 后面会懂
回溯,撤销处理结果
}
}
回溯,剪枝
于 2024-02-03 16:16:33 首次发布