When to use DFS
判断DFS (Back Tracking) 很简单,拿到一个问题,第一感觉如果不穷举一下就没法知道答案,那就可以开始DFS了。
一般DFS的问题有三种:
Find a path to success 判断有没有解
Find all paths to success 找到所有解 <<< 这一类通常是考察的重点(Find all possible solutions)
求所有解的个数
求所有解的具体信息
Find the best path to success 找到最优解
回溯可以抽象为一棵树,我们的目标可以是找这个树有没有good leaf,也可以是问有多少个good leaf,也可以是找这些good leaf都在哪,也可以问哪个good leaf最好,分别对应上面所说三种问题分类。