AcWing 1117.单词接龙 算法思路 常规的DFS问题,只需要注意如何实现字符串匹配的问题即可 算法实现 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253#include <iostream>#include <string>using namespace 2022-01-27 #算法学习 #AcWing #DFS
AcWing 1116.马走日 算法思路 简单粗暴的一个DFS 算法实现 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950#include <iostream>#include <cstring>#define PII pair<int, int>#define 2022-01-27 #算法学习 #AcWing #DFS
AcWing 1113.红与黑 算法思路 常规的洪泛算法解决的问题,只需要从当前点开始扩展,对所有可以访问到的点进行计数即可 算法实现 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172#include < 2022-01-27 #算法学习 #AcWing #BFS #Flood Fill
AcWing 1113.迷宫 算法思路 非常常规的一个BFS问题,只需要在搜索到终点的时候进行跳出即可,若最终未搜索到终点则返回无法到达。 算法实现 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566#include <iost 2022-01-26 #算法学习 #AcWing #BFS
AcWing 178.第K短路 算法思路 本题利用了A*的一个性质,即当终点第N次弹出的时候得到的就是第N小的值,其余与常规A*解法一致。 代码实现 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 2022-01-26 #算法学习 #AcWing #A*
AcWing 179.八数码 算法思路 本算法实际上也是BFS的一种应用,但是朴素的BFS搜索会导致需要搜索的状态过多从而发生TLE或者MLE。为了解决这种问题故采用了A*算法 估计函数 A*算法中一个关键的部分便是估计函数。通过估计函数使得算法可以找到一个接近理想情况的最佳路径。通常情况下一个可用的估计函数必须满足估计值小于最小值,本题的估计函数选择了各个点到其最终位置的曼哈顿距离之和。 A*算法使用一个小根堆代替了BFS中 2022-01-26 #算法学习 #AcWing #A*
AcWing 175.电路维修 算法思路 本算法实际上也是宽搜的一种应用形式。 题目中我们希望通过旋转某几个电路使得整个电路联通,由于所有的电路均为对角线,故我们可以知道如果希望电路联通,终点座标和和起点座标和的奇偶性相同。故由此我们可以直接判断得出无解的情况。 而当有解的情况下,我们可以将电路被旋转视作边权1、电路未被旋转视作边权0,题目将会被转化为一个最短路问题。基于该最短路问题我们可以写出下面代码中的BFS逻辑,即每次扩展 2022-01-25 #算法学习 #AcWing #双端队列 #TODO
AcWing 1107.魔板 算法思路 本题实际上依然是BFS的一种扩展方式。题目中要求从初始状态转换到一个特定的目标状态,同时转换操作固定,故可以考虑采用BFS进行搜索,搜索得到的必然是最少操作的方式。 同时本题要求记录操作序列,故可以参考1076.迷宫问题中记录前驱操作的思想记录每一个操作,最终通过迭代得到操作序列。 算法实现 123456789101112131415161718192021222324252627282 2022-01-24 #算法学习 #AcWing
AcWing 173.矩阵距离 算法思路 该算法实际上是针对BFS的一种扩展写法。我们都知道BFS算法会构造一个搜索树,而如果我们希望从多个起点开始BFS最简单的方式便是使用一个虚拟的BFS起点,并在该起点后面连接所有我们希望作为起点的点即可。表现在代码中则变成了用于BFS的队列在初始化的时候将会加入所有的希望作为起点的点。 算法实现 12345678910111213141516171819202122232425262728 2022-01-24 #算法学习 #AcWing
AcWing 1100.抓住那头牛 算法思路 这道题更为简单粗暴,相比188和1076的二维搜索问题,本题将搜索放到了一维层面,实际上更加简单了,具体思路同dijkstra模板 算法实现 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#include <iostream>#include < 2022-01-24 #算法学习 #AcWing #搜索