欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

深搜

程序员文章站 2022-03-26 11:36:59
...

深搜

//判断从V出发是否能走到终点:
bool Dfs(V)
{ 
  if( V 为终点)
     return true; 
  if( V 为旧点) 
     return false; 
  将V标记为旧点; 
  对和V相邻的每个节点U 
  { 
     if( Dfs(U) == true) 
        return true; 
  }
  return false;
} 

int main() 
{
  将所有点都标记为新点; 
  起点 = 1 
  终点 = 8 
  cout << Dfs(起点); 
} 
判断从V出发是否能走到终点,如果能,要记录路径:
Node path[MAX_LEN];  //MAX_LEN取节点总数即可
int depth; 
bool Dfs(V)
{
   if( V为终点)
   {
      path[depth] = V; 
      return true; 
   } 
   if( V 为旧点)
      return false;
   将V标记为旧点;
   path[depth]=V;
   ++depth;
   对和V相邻的每个节点U
   { 
      if( Dfs(U) == true) 
         return true; 
   }
   --depth;  //这里很重要,回到上一步
   return false;
} 
int main() 
{ 
   将所有点都标记为新点;
   depth = 0; 
   if( Dfs(起点))
   {
      for(int i = 0;i <= depth; ++ i) 
         cout << path[i] << endl; 
   }
}
相关标签: dfs