zoukankan      html  css  js  c++  java
  • 图的遍历 之 深搜dfs

    DFS 遍历
    深度优先搜索是一个递归过程,有回退过程。
    对一个无向连通图,在访问图中某一起始顶点u 后,由u 出发,访问它的某一邻接顶点v1;再从v1 出发,访问与v1 邻接但还没有访问过的顶点v2;然后再从v2 出发,进行类似的访问;;如此进行下去,直至到达所有邻接顶点都被访问过的某个顶点x 为止;接着,回退一步,回退到前一次刚访问过的顶点,看是否还有其它没有被访问过的邻接顶点,如果有,则访问此顶点,之后再从此顶点出发,进行与前述类似的访问;如果没有,就再回退一步进行类似的访问。
    重复上述过程,直到该连通图中所有顶点都被访问过为止。
    深搜过程:
    深搜算法实现:
    代码如下:
     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 char maps[10][11];
     5 bool vis[1000];
     6 int q,m;
     7 void dfs(int a){
     8     vis[a]=1;
     9     if(a<q)
    10     printf("%c --> ",a+64);
    11      else printf("%c",a+64);
    12     for(int i=1;i<=q;i++)
    13     {
    14         if(maps[a][i]==1&&vis[i]==0)
    15         dfs(i);
    16     }
    17 }
    18 int main()
    19 {
    20     
    21     char a,b;
    22     cin>>q>>m;
    23     for(int i=1;i<=m;i++)
    24     {
    25         cin>>a>>b;
    26         maps[a-64][b-64]=1;
    27         maps[b-64][a-64]=1;
    28     }
    29     dfs(1);
    30 }
  • 相关阅读:
    011-iOS核心动画(Core Animation)
    010-CALayer(图层)
    009-手势触摸事件处理
    008-Quartz2D
    007-多控制器管理及其控制器间的数据传递
    007-多控制器管理(控制器间的数据传递)
    通过底层 socket 监控 http/https 思路
    NDK 线程同步
    时间同步算法探究
    Android 事件小结
  • 原文地址:https://www.cnblogs.com/sssy/p/6682520.html
Copyright © 2011-2022 走看看