深度優先搜尋演算法

2021-07-12 04:03:30 字數 753 閱讀 8073

今天我們來複習一下萬能的搜尋演算法之深度優先搜尋演算法。

深度優先搜尋演算法顧名思義就是按照樹的延伸不停的往下搜尋,直到樹的盡頭之後再一步一步的回溯回來。

好吧,我們直接問你乙個問題,給你乙個數n,讓你輸出從1到這個樹的全排列,你會怎麼寫,會不會想到去用若干個for迴圈?

好吧,你肯定錯了,其實他考的就是我們的深度優先搜尋演算法:

#include

using namespace std;

#include

int card[10];

int flag[10];

int step;

int n;

int dfs(int step)

cout}for(int i =1;i<= n;i++)}}

int _tmain(int argc, _tchar* argv)

這就是最最簡單而有直接的搜尋演算法。

那麼我們在延伸一下,從這些全排列中找出***x +yyyy = zzzz的排列怎麼辦?其實只需要稍加修改即可:

#include

using namespace std;

#include

int card[10];

int flag[10];

int step;

int n;

int dfs(int step)

coutfor(int i =1;i<= n;i++)}}

int _tmain(int argc, _tchar* argv)

深度優先搜尋演算法

include include define vertexnum 9 struct node typedef struct node graph struct node head vertexnum 定義圖形結構 int visited vertexnum 頂點陣列 深度優先搜尋 void dfs ...

深度優先搜尋演算法

1.深度優先搜尋演算法的概念 深度優先搜尋屬於圖演算法的一種,英文縮寫為dfs depth first search.其過程簡要來說是對每乙個可能的分支路徑深入到不能再深入為止,而且每個 節點只能訪問一次。如下例 該圖為乙個無向圖,假設我們從a開始進行深度優先搜尋,第二點可以是b c d中任意乙個,...

深度優先搜尋演算法

題目要求 編寫乙個函式,傳入乙個int型陣列,返回該陣列能否分成兩組,使得兩組中各元素加起來的和相等,並且,所有5的倍數必須在其中乙個組中,所有3的倍數在另乙個組中 不包括5的倍數 能滿足以上條件,返回true 不滿足時返回false。這個題目 是考察 深度優先搜發演算法的。在需要讓arr3和arr...