深度優先搜尋

2021-08-06 04:22:56 字數 746 閱讀 8653

深度優先搜尋,dfs顧名思義,是樹的先根遍歷的推廣。

初始狀態所有點均未被訪問,深度優先搜尋從某一點出發,訪問此點,同時對該點做標記,然後遍歷與該點相鄰的其他頂點,若其他頂點已經被標記,返回。直到所有點都被訪問。

主要步驟:

1.確定並訪問初始點。

2.若該點的鄰接點沒有被訪問過,對該點進行深度優先搜尋。(很明顯,在這裡要用到遞迴)

3.如果該點的某一鄰接點已經被標記過,返回該點,並找下乙個鄰接點。

沿著一條路走到黑的感覺....

int dir[4][2]=;//定義方向陣列,方便往四個方向遍歷。

char str[110][110];

void dfs(int i,int j)}

經典例題!

小蝌蚪安家:

3 3###

##.... 4

#include

#include

using namespace std;

char str[100][100]; 

int visit[100][100]=;//標記陣列 

int dir[4][2]=;//方向陣列 

int num;//記錄資料 

int n,m;

int max(int x,int y)

void dfs(int i,int j)

}int main()

for(int i=0;i

} cout

廣度優先搜尋 深度優先搜尋

前言 這幾天複習圖論演算法,覺得bfs和dfs挺重要的,而且應用比較多,故記錄一下。廣度優先搜尋 有乙個有向圖如圖a 圖a廣度優先搜尋的策略是 從起始點開始遍歷其鄰接的節點,由此向外不斷擴散。1.假設我們以頂點0為原點進行搜尋,首先確定鄰接0的頂點集合s0 2.然後確定頂點1的集合s1 頂點2沒有鄰...

廣度優先搜尋,深度優先搜尋

深度優先搜尋 depth first search 簡稱dfs。最直觀的例子就是 走迷宮 廣度優先搜尋 每個頂點都要進出一遍佇列,每個邊也都會被訪問一次,所以 時間複雜度o v e 主要消耗記憶體的是visited prev陣列 queue佇列,所以 空間複雜度o v 深度優先搜尋 每條邊最多會被訪...

深度優先搜尋 廣度優先搜尋

深度優先搜尋 廣度優先搜尋 通過鄰接矩陣對圖進行深搜和廣搜 package com.neusoft.data.structure 深度優先搜尋 廣度優先搜尋 通過鄰接矩陣對圖進行深搜和廣搜 public class dfsbfs 初始化 邊 mmatrix new int vlen vlen for...