图深度优先算法(DFS)

Posted 工科狗和生物喵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图深度优先算法(DFS)相关的知识,希望对你有一定的参考价值。

正文之前

好久没弄C++了,上学期颓废了半学期,这学期开学就搞课程设计快疯了。待会要考试CSP,所以弄点代码储备,待会到了考场说不定能省点功夫!

正文

 
   
   
 
  1. #include <iostream>

  2. #include<vector>

  3. #define Max 1000;

  4. using namespace std;

  5. struct Graph

  6. {

  7.   int  a[10][10];

  8. };

  9. vector<int> path;

  10. bool visited[10];

  11. int deepth=0;

  12. void DFS(Graph tu,int start)

  13. {

  14.    visited[start]=true;

  15.    for(int i=0;i<10;i++)

  16.    {

  17.        if (visited[i]==false && (tu.a)[start][i]<1000)

  18.        {

  19.            visited[i]=true;

  20.            path[deepth]=i;

  21.            ++deepth;

  22.            DFS(tu,i);

  23.        }

  24.    }

  25. }

  26. // 1 4 1 3 1 5 2 5 2 3 4 5 5 6 5 7

  27. int main()

  28. {

  29.    Graph tu;

  30.    for(auto &s:tu.a)

  31.        for(auto &x:s)

  32.            x=Max;

  33.    int a,b,s;

  34.    path.push_back(0);

  35.    for(auto &x:visited)

  36.        x=false;

  37.    for(int i=0;i<8;++i)

  38.    {

  39.        cin>>a>>b;

  40.        tu.a[a][b]=tu.a[b][a]=1;

  41.        path.push_back(0);

  42.    }

  43.    path[deepth]=1;

  44.    ++deepth;

  45.    DFS(tu,1);

  46.    cout<<"====~ The Path is ~====="<<endl;

  47.    for(auto &s:path)

  48.        if(s!=0)

  49.            cout<<"\""<<s<<"\""<<" --> ";

  50.    cout<<" | Stop ~ "<<endl;

  51. }

Output:

 
   
   
 
  1. Last login: Sun Mar 18 11:44:22 on ttys000

  2. = * = * = * = * = * = * = * = * = * = * = * = * = * = *

  3. ✧。٩(ˊᗜˋ)و✧* Hello Welcome 张照博!!开启愉快的一天吧!

  4. = * = * = * = * = * = * = * = * = * = * = * = * = * = *

  5. HustWolf:~ zhangzhaobo$ /Users/zhangzhaobo/program/C++/DFS ; exit;

  6. 1 4 1 3 1 5 2 5 2 3 4 5 5 6 5 7

  7. ====~ The Path is ~=====

  8. "1" --> "3" --> "2" --> "5" --> "4" --> "6" --> "7" -->  | Stop ~

  9. logout

  10. Saving session...

  11. ...copying shared history...

  12. ...saving history...truncating history files...

  13. ...completed.

  14. [进程已完成]

正文之后

祝我好运!发誓这次考试后一定苦学!上学期太飘了。


以上是关于图深度优先算法(DFS)的主要内容,如果未能解决你的问题,请参考以下文章

算法|图的遍历-深度优先搜索(DFS)

基本算法——深度优先搜索(DFS)和广度优先搜索(BFS)

深度优先搜索DFS

常用的图算法:深度优先(DFS)

图的深度优先遍历(DFS)—递归算法

算法-03 | 深度优先DFS| 广度优先BFS