递归
递归:解决子问题的方法和当前问题一致(可以把当前问题拆分成若干个子问题。
基本上所有问题都可以搜索。
递归终止条件
dfs深度优先搜索
这个概念基于递归,两者之间没有明显的概念。
主要区别是搜索基于全局去搜索的,递归是拆分子问题。
八皇后问题
例如:八皇后问题(8x8的棋盘内,放置八个皇后,让皇后不能互攻)
- 每一行只能有一个皇后,不知道在哪
- 朴素方法:4层for循环 (=>n皇后问题:最多能放几个皇后)
伪代码
走迷宫
死循环问题可以通过记忆化来解决。
例题:最后的迷宫
走迷宫问题不能通过深搜来解决:会一条路走到头,走不通了再回溯,所以会以一种错误的方法把迷宫先走一遍