概述
- 回溯算法是大厂笔试最经常出的题目
- 关键点:
- 回溯的底层是 选和不选 的问题
- 本质是一种 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);
}
}