解题思路:
例子解释:第一次搜索 V为0 ,有两个相通的顶点 为1 3 此时1为被访问递归调用自身
第二次 v=1 无相通点 回到第一次的搜索状态
v=0 此时 i=1 时 顶点1 已访问过,循环到3时,3未访问 递归调用
第三次 v=3 两个相通点 0 2 因为0已经访问过。以此类推。
访问顺序如图:
注意事项:
参考代码:
#include <bits/stdc++.h> using namespace std; const int Max=1000; int G[Max][Max];//邻接矩阵图 int vis[Max]; int n; void dfsG(int v){ printf("%d ",v);//访问数组 vis[v]=1;//标记访问 for(int i=0;i<n;i++){ if(G[v][i]==1 && vis[i]==0) //遍历当前位置是否有可访问的顶点 dfsG(i); } } int main () { cin>>n; memset(vis,0,sizeof vis);//初始化vis for(int i=0;i<n;i++){//输入 for(int j=0;j<n;j++){ scanf("%d",&G[i][j]); } } dfsG(0);//从顶点0开始搜索 return 0; }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:654 |
汽水瓶 (C语言代码)浏览:664 |
C语言程序设计教程(第三版)课后习题9.3 (Java代码)浏览:1025 |
A+B for Input-Output Practice (IV) (C++代码)浏览:713 |
【亲和数】 (C语言代码)浏览:541 |
WU-整除问题 (C++代码)浏览:648 |
WU-C语言程序设计教程(第三版)课后习题11.11 (C++代码)(想学链表的可以看看)浏览:1464 |
关于C语言变量位置的问题浏览:294 |
1017题解浏览:663 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:569 |