演算法是程式設計師的靈魂之一,木得靈魂的我開始收集靈魂,收拾自己懶筋。
演算法關鍵
基本模型
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...