小白演算法之深度優先搜尋

2021-10-09 21:13:03 字數 643 閱讀 8246

演算法是程式設計師的靈魂之一,木得靈魂的我開始收集靈魂,收拾自己懶筋。
演算法關鍵

基本模型

void

dfs(

int step)

返回}

例題

數的全排列,輸入一位正整數n(n<100),輸出1到n的全排列。(可以看作有1-n個不同的盒子,你有上面寫著1-n的撲克牌,放進這n個箱子,問有幾種擺法)

分析:利如果n確定,可以利用n重迴圈來解決這個問題,但是n是未知數,所以可以採用深度優先搜尋來嘗試每一種可能。

#include

int n;

int a[99]

;//定義99個箱子,c語言預設陣列為0

int book[99]

;//定義箱子的使用狀態,0未使用,1使用中

void

dfs(

int step)

//定義遞迴函式,step是目前所在的箱子

//返回最近呼叫遞迴函式的地方

for(i=

1; i<=n; i++)}

return

;//返回最近呼叫的地方

}int

main()

演算法之深度優先搜尋和廣度優先搜尋

深度優先搜尋演算法 depth first search 是搜尋演算法的一種。它沿著 樹的深度 遍歷樹的節點,盡可能深的 搜尋樹的分支。當節點v的所有邊都己被探尋過,搜尋將回溯到發現節點v的那條邊的起始節點。這一過程一直進行到已發現從源節點可達的所有節點為止。如果還存在未被發現的節點,則選擇其中乙個...

演算法筆記之深度優先搜尋 DFS

由於各種筆試 面試都有演算法程式設計題,總感覺對於演算法和資料結構比較心虛。最近開始刷一些演算法題,複習一下資料結構以及演算法的相關知識。過程中記錄一下知識點,聊勝於無。兩個問題如下 一共有10塊積木,每個積木上有乙個數字,0 9。搭積木規則 每個積木放到其它兩個積木的上面,並且一定比下面的兩個積木...

深度優先搜尋之深度體驗

迷宮有n行m列的單元格組成 n和m都小於等於50 每個單元格內要麼是空地,要麼是障礙物。找到一條從迷宮的起點通往迷宮內任意一點的最短路徑。注意 障礙物是不能走的,也不能走到迷宮之外。include include int n,m,p,q,len,min 99999999 int a 51 51 bo...