用c++20写一个深度搜索算法
时间: 2023-05-16 09:04:29 浏览: 149
递归回溯深度优先搜索DFS练习题(含C++源码)
5星 · 资源好评率100%
好的,以下是一个简单的深度搜索算法的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_N 100 // 最大节点数
int n; // 节点数
int g[MAX_N][MAX_N]; // 图的邻接矩阵
int visited[MAX_N]; // 标记节点是否被访问过
void dfs(int u) {
visited[u] = 1; // 标记节点u已经被访问过
printf("%d ", u); // 输出节点u的编号
for (int v = 0; v < n; v++) {
if (g[u][v] && !visited[v]) { // 如果节点v与节点u相邻且节点v未被访问过
dfs(v); // 递归访问节点v
}
}
}
int main() {
scanf("%d", &n); // 输入节点数
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &g[i][j]); // 输入邻接矩阵
}
}
for (int i = 0; i < n; i++) {
if (!visited[i]) { // 如果节点i未被访问过
dfs(i); // 从节点i开始深度优先搜索
}
}
return 0;
}
```
这个算法可以用来遍历一个连通图中的所有节点。它从一个起始节点开始,递归地访问与它相邻的未被访问过的节点,直到所有节点都被访问过为止。
阅读全文