写一个c++的深度搜索的代码
时间: 2023-06-09 21:03:09 浏览: 91
当然,我会尽力回答您的问题。以下是一个简单的深度优先搜索的C语言代码示例:
```c
#include <stdio.h>
// 定义常量
#define MAX_N 100
int n; // 顶点数
int m[MAX_N][MAX_N]; // 邻接矩阵
int visited[MAX_N]; // 标记是否已经访问
// 深度优先搜索算法
void dfs(int x)
{
int i;
visited[x] = 1; // 标记当前顶点已经访问
printf("%d ", x); // 输出当前顶点的编号
for (i = 0; i < n; i++)
{
if (m[x][i] && !visited[i]) // 如果当前顶点和顶点i之间有边且顶点i未被访问
{
dfs(i); // 递归访问顶点i
}
}
}
int main()
{
// 读入图的顶点数和邻接矩阵
scanf("%d", &n);
int i, j;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
scanf("%d", &m[i][j]);
}
}
// 对每个连通分量分别进行深度优先搜索
for (i = 0; i < n; i++)
{
if (!visited[i])
{
dfs(i);
}
}
return 0;
}
```
这段代码实现了基本的深度优先搜索算法,可以通过邻接矩阵表示图的关系,输出每个连通分量的遍历序列。当然,根据具体的应用场景可以对算法进行更进一步的优化,例如使用邻接表代替邻接矩阵,以降低空间复杂度等。
阅读全文