模拟&递归&搜索
模拟&递归
模拟
似乎没什么好说的,模拟就是出题人让你做什么,你就做什么,然后你就会WAAC
推荐例题:
递归
其实就是一个函数在求解过程中调用自己,然后你把最终值手算出来,当询问道直接返回
1 | int func(传入数值) { |
dfs&bfs
DFS
算法
DFS即depth first search 深度优先搜索,是搜索算法的一种也是考场骗分神器
即每次当一种情况无法延伸后返回父亲节点,换一个分支再次延伸
e.x.
对于一个这样的搜索树:
请你先手推一下dfs的顺序:
伪代码
1 | DFS(v) // v 可以是图中的一个顶点,也可以是抽象的概念,如 dp 状态等。 |
BFS
算法
我们注意到,在上面的搜索树中,当答案在右侧时dfs搜索到的速度也很慢,如点2
所以我们可以使用BFS
BFS 全称是 Breadth First Search,中文名是宽度优先搜索,也叫广度优先搜索。
使用queue,每次从队首取出元素,把能到达的节点压入队尾。
因此,第一次访问某点一定是到当前点的最少步数。所以bfs常被用了求最值
对于这个搜索树
请你先手推一下bfs的顺序:
伪代码
1 | bfs(s) { |
Comment