DFS与BFS搜图模板总结

来源:互联网 发布:oppo相机软件下载 编辑:程序博客网 时间:2024/06/05 06:58

DFS:

void dfs(坐标)

{

   if (满足条件)

   {

       结束处理;

   }

   else

   {

       for循环或其他手段实现点的移动(一滑到底,相邻格子,“日”字型。。。。。。)

       {

           if(将要移动的点满足合法条件(不撞墙,不出界。。。。。。))

           {

               移动,并记录新的坐标;

               dfs(新的坐标)//(DFS实现关键);

               撤回当前点;

           }

       }

   }

}

例题1:http://blog.csdn.net/sunny1996/article/details/43940349

例题2:http://blog.csdn.net/sunny1996/article/details/43939251



BFS:

struct point

{

   int x;

   int y;

   其他具体用处;

};

void bfs()

{

   while(!q.empty()

   {

       提取当前出队列点;

       if(当前点满足要求)

       {

           记录步数并退出;

       }

       else

       {

           for循环或其他方式实现移动

               {

                   if(新的点满足合法条件)

                   {

                       新点入队;

                   }

                   还原旧点;

               }

               旧点出队;

       }

}

int main()

queue<point> q;//BFS实现关键

例题:http://blog.csdn.net/sunny1996/article/details/43940385




总结:

个人理解的BFSDFS的区别:DFS一次把一条路走完,BFS齐头并进



 


0 0
原创粉丝点击