解题思路:
例子解释:第一次搜索 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 人评分
字符串输入输出函数 (Java代码)浏览:1437 |
C语言训练-数字母 (C语言代码)浏览:584 |
C语言训练-大、小写问题 (C语言代码)浏览:612 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:840 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:502 |
printf基础练习2 (C语言代码)浏览:746 |
C语言程序设计教程(第三版)课后习题9.2 (C语言代码)浏览:556 |
出圈】指针malloc版浏览:355 |
简单的a+b (C语言代码)浏览:946 |
1051(奇了怪了)浏览:647 |