六、深搜广搜

       搜索,所谓的万能算法,搜出答案。搜索算法是利用计算机的高性能来有目的的穷举一个问题的部分或者所有的可能情况,从而求出问题的解。但是实际上,用搜索做题几乎是经常TLE的,这也并不是搜索不对,而是在搜的过程要加上一些剪枝,来精简优化。

       搜索有两方法,深搜和广搜。

       1、深搜

深搜过程用到了回溯思想,通俗讲深搜就是每当有多个选择时找到一条路,沿这条路一直向前走的同时,给自己留下后路(回溯),防止这条路找不到答案,好重新选择。

       深搜的模板是最简单的,一眼就能看懂。

       DFS(k)

       {

              If(目的地)           结束;

              for(……)

{     

       保存结果;

       DFS(k+1);

       回溯;

}

}

      

       2、广搜

       广搜用到了队列入队出队,基本思想就像是每次遇到多个选择,都要走上一遍,找不到结果,就每一个节点都在全走下去一步,广搜往往用来求最短路径问题。

       广搜的模板则有一点难度,理解上比深搜难了好多。

              int BFS()

              {

                     初始化,初始状态存入队列;

                     head=0;     tail=1;

                     do

                     {

                            head++; (出队)

                            for(i……………)

                            {

                                   If(符合条件)

                                   {

                                          tail++; (入队)

                                          if(新节点与原已产生节点重复)

                                                 tail--; (取消入队)

                                          else if(新节点是目标结点)

                                                 退出;

                                   }

}

}

}

       
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值