回溯总结

回溯算法模板:

void backtracking(参数) {
    if (终止条件) {
        存放结果;
        return;
    }

    for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {
        处理节点;
        backtracking(路径,选择列表); // 递归
        回溯,撤销处理结果
    }
}

主要是解决下列问题:
1.组合问题
2.切割问题
3.子集问题
4.排列问题
5.去重问题

待复刷

你可能感兴趣的:(回溯,递归)