
ACM算法练习
Vi_cki_
这个作者很懒,什么都没留下…
展开
-
迭代加深搜索
IDDFS 题目 LOJ 10022“埃及分数”题目链接https://loj.ac/p/10022迭代加深,字面意思。适用于搜索树很深而且很宽的题,如果直接使用DFS会陷入递归无法返回;如果直接用BFS,队列可能爆炸。具体操作模板:1、先设定搜索深度为1,用DFS搜索到第1层即停止2、如果没有找到答案,再设定深度为2,用DFS搜索2层即停止3、继续设定深度为3,4,5巴拉巴拉巴拉,逐步扩大DFS的搜索深度,直到找到答案每一层的广度上采用了DFS的搜索思想,在具体变成实现上是DF原创 2021-01-28 11:05:17 · 279 阅读 · 0 评论 -
IDA*
题目 poj 3134题目链接https://vjudge.net/problem/POJ-3134前言:说一下IDA*是对迭代加深搜索的优化,加一个估价函数,预测出当前DFS的状态不再搜索下去,就可以直接返回,提高了效率。简单说,就是在IDDFS过程中利用估价函数进行剪枝操作。题目分析:翻译:等价于从数字1开始,用加减法,最少算多少次才能得到n。(这样清楚多了吧!)难点:如果每一步进行搜索,新值的数量增长非常快。直接DFS深度可能有1000很大概率就溢出了,如果用BFS也可能超出队原创 2021-01-27 16:45:03 · 112 阅读 · 0 评论 -
N皇后问题经典DFS
题目 HDU 2553“N皇后问题”题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2553前言:通过这个题学习到了剪枝。暴力破解会超时啊,就很拿人。DFS的难点在于扩展子节点的时候如何构造停止递归并返回的条件,就要用到剪枝函数。依然举个例子,分析一下4皇后怎么搞。思路如下:从第一行开始放皇后:第一行从左到右有4种方案,产生4个结点;第2行,排除同列和斜线,拓展新的结点,注意不用排除同行,因为第二行和第一行已经是不同行的了。继续拓展第三行和原创 2021-01-27 14:42:00 · 398 阅读 · 2 评论 -
DFS模板题
题目HDU1312题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1312在这里说一下DFS的思路吧,DFS就是递归,设num是到达砖块的数量,算法过程描述如下:在出书位置令num=1,标记这个位置已经走过 左,上,右,下四个方向,按顺时针顺序选一个能走的方向,走一步 在新的位置num++,标记这个位置已经走过 继续前进,如果无路可走,回退到上一步,换个方向再走 继续以上过程,直到结束诶图像传不上来,不传了,挺简单的,我这种笨比都能懂A原创 2021-01-27 10:03:37 · 233 阅读 · 1 评论 -
八数码问题
八数码问题思路前言:备战蓝桥杯遇到一个八数码问题,整理一下思路。第一次写,不太好,见谅。BFS是由近到远的扩散过程,解决最短距离问题。搜索的可以是数,也可以是状态,八数码就是状态。从初始状态出发,每次转移都逐步逼近最终状态,每转移一次步数加一,达到目标时,经过的步数就是最短路径。举个例子:初始状态1 2 3 8 4 7 6 5 最终状态1 3 8 2 4 7 6 5 ...原创 2021-01-26 14:28:52 · 418 阅读 · 1 评论