训练/递推/递归
递归前先了解一个全排列问题。
就是生成一个全排列
1 |
|
然后其实用algorithm头文件下的东西也可以很简单生成全排列,就是一个比较简单的递归思维
1 |
|
一道DFS深度优先搜索题
题目链接
洛谷P1135
题意:有n层楼,现在在a楼目标去b楼需要计算a楼去b楼的最短操作次数。每次操作可操作在a楼的一个数k[a],上升k[a]或下降k[a]BFS其实也能过,
题解:
BFS广度搜索
队列存有当前位置,还有走到当前位置的步数
将第一个位置进队列,将此处标记上走过,然后从这个位置有向下或者向下,向上走k[a]层后,在当前走过的步数前提下+1,并且将次层标记为1,防止死循环
另一种情况,在当前位置向下走k[a]个阶梯,当前走过的步数+1,并将此层标记为1,防止死循环。当队首元素为目标层后退出循环,求得。
代码:
1 |
|
DFS题当然是用来训练深搜的
题解:
深搜一个now表示当前到达楼层,一个sum表示总次数,然后vis数组表示走未走过,无出路是记得回溯,回归为0状态即可
代码:
1 |
|
朴素的DFS注意变换起始位置即可
题目链接
洛谷P1036
题目思路,每次改变位置计算到的位置dfs吧
代码:
1 |
|
洛谷P1057
题目链接
洛谷P1057
解法记忆化搜索
//不太会。。。
1 |
|
洛谷P2513
思路:
//dp不太会
以下仅是70分的暴力dp
1 |
|