搜索题目心得

这九十多道搜索题目看完,算是开了一回眼界。一个搜索算法竟然能衍生出这么多的变形,感慨之余,谈一谈自身的心得,其中主要是对做题时的一些心得,而不局限于搜索本身。

1.寻找切入点。我以前写程序大概是看完题目就写,能写到哪写到哪。写不下去再想接下来要怎么办。其实要AC一道题目,我觉得最重要的是找到一个切入点。先想清楚怎么把题目中复杂而又抽象的条件,等价转换成一个自己相对比较熟悉的版块,用自己所学过的知识表示出来。然后以这个版块为切入点和大方向,慢慢去实现题目中的一些细节问题。如果一个问题能够想的很清楚,代码的实现自然也不成问题。这也是为什么,自己拿到一个题目之后无从下手,而看了别人的代码或思路之后恍然大悟。

2.变形虽然繁多,但静下心来仔细想一想,搜索这个算法本质上要做的事情是不变的。要想明白这个算法可以告诉我什么,能够帮助我干什么事,为了解决这个事情而使用算法,而不是算法的生搬硬套。就像我高三数学老师经常说的一句话:"为什么?因为需要。"

血色先锋队 - 洛谷就像这道题,BFS思想。但并不需要对每个起点进行BFS直至终点然后取最小值,而是可以一开始就把所有的起点放入队列,之后不必要放入已经探索过的元素,因为即使是有多个起点,但是由于BFS的按层搜索,也会保证已经探索过的元素的值就是最小值。

油滴扩展 - 洛谷这道题可以采用DFS思想。就是用DFS加上回溯来模拟各个油滴按照不同的顺序滴入所得到的结果,最后取一个最大值即可。

3.知识点的融合。有一部分题目是单纯的搜索,但更多的题目是把搜索建构在树、并查集、图等的基础之上的。还有就是数学,一个数学模型的构建与推导,对思维和代码本身的结果可能是大相径庭的。

4.以前遇到不会的题看题解,看完之后,自己再打一遍,AC之后万事大吉。现在更想做的是,和题解的思路对比一下,有哪些地方我想到了但我不会处理,有哪些地方我想不到,我为什么想不到。AC一个题目的价值是学会这个题目告诉了我什么,而不是AC这个题目本身。简而言之,应该从“学”的角度向“悟”的角度过渡。这一点目前我做的并不是太好,以后应该注意一些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值