继数据结构之后,我们又一次的结束了一个类似很难的专题,搜索!!!
越来越感觉这个暑假的集训并不是让我们深入的了解一个专题,而是那种类似让我们知道:嗯, 我们遇到这种题的时候应该这么做,用这种方法可以做出来!!也许是因为时间短吧,这么短的时间里面想要深度的探索一个东西有点不现实,所以只好退而求次先在有限的时间里面来个广度搜索,如果你有速度的话, 那么一样可以探索的很深!
这次搜索专题我们只学了“穷举”“深度优先搜索”“广度优先搜索”;
用穷举法解决问题的优点是“简单,不用动脑子”,穷举是利用暴力,利用最直接的方式,尝试所有方法,来找到答案的。这种方法是你经常第一时间想到的方法。如果时间和空间都允许,就穷举它。一般情况下容易编码,也容易调试,如果你面对一道可能状态小于百万的题目,那么你可以考虑使用穷举。当然,能剪枝的地方还是不能手下留情啊!!
深搜,一某一个节点开始,不断向前搜索,知道无路可走或者所有相邻节点都已经
拜访过为止,然后退回到前一个节点,寻找没有拜访过的继续这一个过程。有时候,
可能会需要stack来记录所走过的路径!
而广搜是以某一节点为出发点,先拜访所有相邻节点。再依序拜访与刚才被拜访相邻
但是尚未拜访过的点,直到所有的点被拜访过!因此广搜时需要使用queue来记录其顺序,当然,也可以用数组模拟!呵呵!!
采用优先队列的知识加上广搜可以做很多有条件的搜索题!比如一些迷宫题中由于有的格子需要的时间不同,如果直接广搜的话,不容易控制,就可以使用加上优先队列的广搜来做,呵呵,这个取自某一位同学的博客,瞻仰下!!等咱学习了,在另写一个博客纪念下!!