MY LOUGU 主页的代码3

该代码示例展示了如何使用C++实现DFS深度优先搜索算法,通过邻接矩阵或邻接表表示图,遍历并标记已访问节点,递归访问邻居节点,从而遍历整个图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DFS

代码实现

#include <iostream>
#include <vector>

using namespace std;

void dfs(int node, vector<bool>& visited, vector<vector<int>>& graph) {
    // 检查是否已访问过该节点
    if (visited[node]) {
        return;
    }

    // 标记当前节点为已访问
    visited[node] = true;

    // 在此处对节点进行相应的操作

    // 递归地访问当前节点的邻居节点
    for (int i = 0; i < graph[node].size(); i++) {
        int neighbor = graph[node][i];
        dfs(neighbor, visited, graph);
    }
}

int main() {
    int nodes = 6;

    // 创建邻接矩阵或邻接表表示的图
    vector<vector<int>> graph(nodes);
    graph[0].push_back(1);
    graph[0].push_back(2);
    graph[1].push_back(3);
    graph[1].push_back(4);
    graph[2].push_back(5);

    // 创建一个 visited 数组,用于记录访问状态
    vector<bool> visited(nodes, false);

    // 从起始节点开始进行 DFS
    dfs(0, visited, graph);

    return 0;
}

解释

在上述模版中,graph 是一个表示图的邻接矩阵或邻接表。visited 是一个表示节点访问状态的数组,初始时所有节点的访问状态都为 falsedfs 函数用于进行深度优先搜索,其中 node 表示要访问的当前节点,visited 是节点访问状态的数组,graph 是图的表示方式。在每次递归调用 dfs 函数时,首先检查当前节点是否已经访问过,如果是则返回,否则将当前节点标记为已访问,并进行相应的操作。然后,递归地调用 dfs 函数访问当前节点的邻居节点,直到所有节点都被访问完毕。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值