資料結構 深度優先搜尋

2021-09-09 01:22:16 字數 1243 閱讀 5961

dfs適合此類題目:給定初始狀態跟目標狀態,要求判斷從初始狀態到目標狀態是否有解。

輸入資料: 若是遞迴資料結構,如單鏈表,二叉樹,集合,則百分百可以可以深搜;若是非遞迴資料結構,如一維陣列,二維陣列,字串,圖,則概念小一些.

狀態轉移圖: 樹 or 圖

求解目標: 必須要走到最深 (例如,對於樹,必須走到葉子節點,才能得到乙個解) 這種情況非常適合深度搜尋.

/*

dfs模板:

[in] input 輸入指標,

[out] path 當前路徑,中間結果

[out] result 儲存最終結果

[inout] cur or gap 標記當前位置或者距離目標的距離

[return] 路徑長度,如求路徑本身,則不需要返回長度

*/void dfs(type &input, type &path, type &result, int cur or gap)

if (可以剪枝) return;

for ()

}

class solution ,,, };

bool inaera(int x, int y)

bool searchword(vector>& board, string word, int index, int x, int y)

if (board[x][y] == word[index])

}visited[x][y] = false; // 撤銷訪問

}return false;

}public:

bool exist(vector>& board, string word)

}return false;

}};

// 動態規劃 + 深度搜尋

namespace pro131_1

}vectorpath;

helper(path, s, dp, 0);

return res;

}void helper(vectorpath, string s,vector < vector> &dp, int start)

for (int i = start; i < s.size(); i++) }}

};}

dfs-deep first search-深度優先搜尋

資料結構 廣度優先搜尋

實驗任務 眾所周知,索隆是乙個路痴,一天在一小島上,他又迷路了!好 山治心急如焚,決定出去找他,由於練成了月步,山治的速度竟然達到了正無窮!小島上除了空地,還有盤 絲洞 簡稱 psd 盤絲洞裡住著可愛的妹紙,山治每次經過乙個盤絲洞,都要停留乙個單 位時間來欣賞妹紙,給你乙個 n m 的地圖以及山治和...

廣度優先搜尋 資料結構

廣度優先搜尋 bfs 的乙個常見應用是找出從根結點到目標結點的最短路徑。結點的處理順序是越是接近根結點的結點將越早地遍歷。佇列的入隊和出隊順序是新新增的節點不會立即遍歷,而是在下一輪中處理。結點的處理順序與它們新增到佇列的順序是完全相同的順序,即先進先出 fifo 這就是我們在 bfs 中使用佇列的...

資料結構之深度優先遍歷

深度優先遍歷 從根節點開始遍歷,從左到右依次遍歷,遍歷時應先將一條分支上遍歷完才進行下一輪遍歷。如圖 遍歷順序為 1 2 4 3 5 程式如下 include int book 101 用於標記是否已遍歷過,未遍歷則為值為0 int sum 每標記一次加 1 直到sum等於需要遍歷的頂點個數n為止 ...