关于搜索的一些理解

搜索是一种及其基础的算法 掌握其基本内容是必要的  而其衍生的题目也可以十分复杂 光看是不行的 所有每种题目后面我都推荐了一些题目

其实搜索考的是思维  引用黄大佬的说法就是结构简单就思维难  因为基本套路大家都知道

搜索其实是一种相当暴力的思路 枚举所有状态来找出其中符合题目要求的并记录下来  搜索的方法有DFS(深度优先搜索)、BFS(广度优先搜索)、二分搜索、双向搜索、启发式搜索等等

洛谷 P1665、P1019、P1088

DFS的基本过程其实相当于走迷宫时你朝着一个方向走 如果是死路就返回到最近的岔路口选择另一个方向 直到你到达了出口

其缺点是显而易见的  会花费大量的时间 这时就需要一些技巧来降低时间花费  对一定不符合题目的状态提前找出并排除  这就是DFS的剪枝技巧的来源  剪枝顾名思义是剪掉树木的枝条 什么枝条需要减除  在题目中就是不符合要求的  其实这里就开始玄学了 到底什么不符合就要看题目了 难度的区分就从这里开始

我说几个比较基础的剪枝思路   使用数组标记位置 当一个位置你到达时已经被标记过了 那么说明在前面你到达了这里  你又绕回来了  如果是求最短路线的你这条路肯定不行了 不过要注意在有些时候在回来的时候清除标记   标记化转化一下就是记忆化了  每当你到达一个新的地点就把状态提前储存下来 那么下次再到达时就可以直接利用 省下了大笔的时间   这个其实就是DP的一种思路把已知量储存下来并用来推出未知量   

洛谷 P1219(经典的八皇后)、P1434、P1118、P1433、P1120  

BFS的基本过程与DFS类似 不过它是相当于走迷宫时 每一次将所有可能性都走一步并储存下来 于是它运用了queue队列 这使得它在找最短路线题目及其简单 第一次到达终点肯定是最短的

它的其他技巧与DFS类似就不深入了

 洛谷 P1605、P1135、P1443

二分搜索是在一个限定范围类猜测关键值并拿来检测是否符合  如果不符合是多了还是小了来调整下次的猜测值   它的关键是边界与check函数的设置 这时就需要思维了(这需要是在一个单调区间内进行)感谢黄大佬提醒%%%%

 洛谷 P1873、P1024、P2440、P3853

双向搜索其实就是从起点与终点一起搜索 在中间汇合  可以降低复杂度

 看到最后来个彩蛋  推荐一首轻音乐 Spring  

全部评论

相关推荐

评论
点赞
收藏
分享
正在热议
# 25届秋招总结 #
442240次浏览 4509人参与
# 春招别灰心,我们一人来一句鼓励 #
41913次浏览 531人参与
# 北方华创开奖 #
107423次浏览 599人参与
# 地方国企笔面经互助 #
7961次浏览 18人参与
# 同bg的你秋招战况如何? #
76585次浏览 561人参与
# 虾皮求职进展汇总 #
115499次浏览 886人参与
# 阿里云管培生offer #
120213次浏览 2219人参与
# 实习,投递多份简历没人回复怎么办 #
2454609次浏览 34856人参与
# 实习必须要去大厂吗? #
55761次浏览 961人参与
# 提前批简历挂麻了怎么办 #
149889次浏览 1977人参与
# 投递实习岗位前的准备 #
1195913次浏览 18548人参与
# 你投递的公司有几家约面了? #
33203次浏览 188人参与
# 双非本科求职如何逆袭 #
662189次浏览 7394人参与
# 如果公司给你放一天假,你会怎么度过? #
4751次浏览 55人参与
# 机械人春招想让哪家公司来捞你? #
157622次浏览 2267人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11535次浏览 284人参与
# 发工资后,你做的第一件事是什么 #
12682次浏览 62人参与
# 工作中,努力重要还是选择重要? #
35793次浏览 384人参与
# 参加完秋招的机械人,还参加春招吗? #
20120次浏览 240人参与
# 我的上岸简历长这样 #
452000次浏览 8088人参与
# 实习想申请秋招offer,能不能argue薪资 #
39289次浏览 314人参与
# 非技术岗是怎么找实习的 #
155866次浏览 2120人参与
牛客网
牛客企业服务