马踏棋盘
5*5棋盘 从(0,0)按马字走步,填满整个棋盘可能的方案数
VOID DFS(状态 A)
判断当前的状态是否合法。合法则继续执行,否则则回到上次调用。
进行一次状态转移,也就是调用DFS(状态 A + Δ)
试探节点A
A是否在图(树)中
如果在 标记A
如果已被试探过的话 所影响的各种值
紧跟着去试探所有A可达的节点
等待所有的执行完后 还原标记A
1 | #include <iostream> |
补充
和深搜不同,广搜总是每次都把离上一状态最近的状态用一个队列记录下来;
记录之后,检查队列是否为空,如果不为空,就讲队首元素弹出,并且以这个状态为“根节点”进行广度优先搜索。
直到整个队列为空为止。