dfs學習筆記 1

2021-09-10 13:38:51 字數 984 閱讀 3226

這篇文大概就是自己在學習過程中學到的一些模板和注意事項吧,emmm在此先膜拜各路大佬orz

先貼核心**

void dfs()//引數用來表示狀態  

if(越界或者是不合法狀態)

return;

if(特殊狀態)//剪枝

return ;

for(擴充套件方式)

要注意路徑記錄節點重判!!!

然後接下來是一些最最最基礎的dfs的題了,承蒙不棄qwq

1.全排列

題目描述:

排列與組合是常用的數學方法。

先給乙個正整數 ( 1 < = n < = 10 ) ,例如n=3,所有組合,並且按字典序輸出:

1 2 3

1 3 2

2 1 3

2 3 1

3 1 2

3 2 1

輸入:輸入乙個整數n(1<=n<=10)

輸出:輸出所有全排列

每個全排列一行,相鄰兩個數用空格隔開(最後乙個數後面沒有空格)

樣例輸入:

樣例輸出:

1 2 3

1 3 2

2 1 3

2 3 1

3 1 2

3 2 1

**:

#includeint n,a[1005];

int book[1005]=;

void dfs(int m)

if(r - a >n - b + 1) return ;

for(int i = b ;i <= n;i++)

}int main()

先到此為止吧orz

dfs學習筆記整理

dfs題型 1.連通塊 就是標記畫圖,算出每個小模組個數 2.尋找到達終點的途徑數 理解dfs其實會無數次到達終點後,每次到達就ans 就可以算出,但是注意回溯時vis x y 要清0.例如下面這個 include include includeusing namespace std const i...

DFS序學習筆記

1.定義及理解 dfs序是深度優先遍歷一顆樹的時候產生的時間戳序列,可以將樹形結構有序地轉化為線性結構,從而將樹上問題轉化為線性問題 這時,我們就可以用許多優秀的資料結構,比如維護區間的線段樹 樹狀陣列等方便地處理樹上問題啦!2.重要的性質 1 設in x 表示第一次dfs到x節點的時間戳,out ...

學習筆記 DFS與BFS

這是oi競賽中兩個基礎演算法,在此做乙個簡略的總結 全名深度優先搜尋,顧名思義,是深度優先,一條路走到黑的做法 樹 圖論相關的問題中常用到dfs dfsdf s遍歷處理資訊 演算法用處 全名寬度優先搜尋 一般的套路是設定狀態,既然是寬度優先,那麼同乙個狀態越早到達越優 所以時空複雜度都是狀態總數,常...