C++ 深度优先搜索

深度优先搜索(dfs)简称深搜,其状态“退回一步”的顺序符合“后进先出”的特点,所以采用栈贮存状态。

深搜的时间复杂度较小,因为他只储存了从初始状态到当前状态的一条搜索路径。但是,深搜找到的第一个解不一定是最优解,要找到最优解必须搜索整棵“搜索树”。

所以,深搜适用于要求所有解方案的题目。

深搜可以采用直接递推的方法实现,其算法框架如下:

void dfs(dep:integer,//参数表)
{
 //自定义函数
 if(//当前是目标状态)
   {
     //输出解或者作计数、评价处理 
   }    
   else
   for(i=1;i<=状态的拓展可能数;i++)
   if(第i种状态拓展可行)
   {
        //维护自定义参数
        dfs(dep+1,参数表); 
   }
    
}
原文地址:https://www.cnblogs.com/FXY-180/p/9371554.html