BFS宽搜、DFS深搜

好,我昨天说的,要写BFS的模板,那我今天就详细的讲讲。

按三步走。

-思路

-模板

-题目及总结

好勒,我们开始吧。


BFS

思路:横向搜索

先找邻近的,邻近的再找第二层……以此类推,可以求最短路径。

格式:

while(!q.empty()){

   k=q.front();

   q.pop();

   if(满足要求){//这里通常用一个循环

      改变;

      if(他是要找的){

          记录/输出……

     return;

     }

      q.push(m);

   }

}

特别的,宽搜叫以空间换时间。

给点题……

ybt🐏👃😢网站

           我:很简单吧😄

someone:……


DFS

思路:深处搜索


一个劲走到底,穷途末路才回首返回……似乎这图不够劲,看不出深搜的力量,不如这一个:


艰难的改动

凑活凑活,就这样吧,如果要求9号元素,特费时间;如果要求5号元素,走了弯路……这就是dfs的问题。关键是,dfs,节省空间。所以验证了那一句,省时省空间,两者二选一(额……你二选零,我也挡不住你)。

格式:

void dfs(int step)

{

        if(到达边界)

        {

            操作;

            (return;)//这视情况而定

        }

      // for循环等尝试每种可能

        {

              if(满足条件){

                  标记;

                  dfs(step+1);//继续下一步

                  恢复初始状态;

                  //其实有时适当的不恢复叫剪枝,是一种优化

            }

       }

相对的,这是用时间换空间,当然是以空间为重,虽然不建议。

dfs,又名搜索与回溯,在恢复原始状态这一步,这叫回溯。回溯就是:碰壁,就换方向尝试,不然就返回。

给点题:

我对🐏似乎有点太痴迷……换网站吗?

好勒,这些题,还行吧,就有那么一点点难——

big,big,big,big,big,......problem...

今天就到这,再见。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容