回溯算法框架

164 阅读1分钟

概述

  • 回溯算法是大厂笔试最经常出的题目
  • 关键点:
    • 回溯的底层是 选和不选 的问题
    • 本质是一种 DFS 遍历
  • 难点:
    • 减枝操作(画出决策树,进行判断)

    • 如何去标识所有的情况

ArrayList result = new ArrayList();
ArrayList one = new ArrayList();

public void back() {
    // 判断条件满足
    if (judge) {
        result.add(new ArrayList<>(one));
        // 一定要 return 否则会进入下一层的遍历
        return;
    }
    // 当前状态下可以做出的所有选择
    for () {
        // 加入这种状态
        one.add("状态");
        back();
        // 排除这种状态
        one.remove(one.size()-1);
    }
}