91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

c語言dfs算法怎么實現

小億
100
2023-12-01 10:51:44
欄目: 編程語言

C語言中實現深度優先搜索(DFS)算法的一種常見方法是使用遞歸。下面是一個簡單的示例:

#include <stdio.h>

#define MAX_VERTICES 100

int graph[MAX_VERTICES][MAX_VERTICES]; // 圖的鄰接矩陣表示
int visited[MAX_VERTICES]; // 記錄頂點是否已訪問

// 深度優先搜索函數
void dfs(int v, int n) {
    visited[v] = 1; // 標記當前頂點為已訪問
    printf("%d ", v); // 輸出當前頂點

    // 遍歷鄰接矩陣中與當前頂點相鄰的所有頂點
    for (int i = 0; i < n; i++) {
        if (graph[v][i] && !visited[i]) {
            dfs(i, n); // 遞歸搜索相鄰頂點
        }
    }
}

int main() {
    int n, m; // n為頂點數,m為邊數
    scanf("%d %d", &n, &m);

    // 初始化鄰接矩陣和visited數組
    for (int i = 0; i < n; i++) {
        visited[i] = 0;
        for (int j = 0; j < n; j++) {
            graph[i][j] = 0;
        }
    }

    // 讀入邊的信息,并構建鄰接矩陣
    for (int i = 0; i < m; i++) {
        int u, v; // 邊的兩個頂點
        scanf("%d %d", &u, &v);
        graph[u][v] = 1;
        graph[v][u] = 1; // 若圖為無向圖,還需設置對稱位置為1
    }

    // 從頂點0開始進行深度優先搜索
    dfs(0, n);

    return 0;
}

上述代碼中,首先定義了一個鄰接矩陣graph用于表示圖的連接關系,以及一個visited數組用于記錄頂點是否已訪問。dfs函數是深度優先搜索的核心函數,它會遞歸地搜索與當前頂點相鄰的未訪問頂點,并標記已訪問的頂點。

main函數中,首先讀入頂點數和邊數,并初始化鄰接矩陣和visited數組。然后根據輸入的邊的信息,構建鄰接矩陣。最后,從頂點0開始進行深度優先搜索。

以上是一個簡單的深度優先搜索算法的實現,你可以根據具體的需求進行修改和擴展。

0
高雄市| 玉山县| 普兰店市| 许昌县| 岱山县| 怀宁县| 太谷县| 山阳县| 林甸县| 旺苍县| 东乌珠穆沁旗| 民和| 宁河县| 江阴市| 枣庄市| 海口市| 仪陇县| 甘孜| 扎鲁特旗| 怀集县| 河南省| 洞头县| 瓦房店市| 土默特右旗| 上饶市| 株洲县| 浮梁县| 濉溪县| 新和县| 北碚区| 含山县| 隆化县| 延川县| 新郑市| 耿马| 逊克县| 蒲城县| 松江区| 陕西省| 章丘市| 台山市|