我對DFS的理解

2022-05-27 10:09:10 字數 972 閱讀 5904

我對dfs的理解

[何為dfs]

深度優先搜尋(depth-first-search),簡稱dfs。是一種常見搜尋演算法。其方法是從原點不斷一條路擴散,當無路可走時回退來走下一條路,直至找到目標或遍歷。

[框架]

1

int dfs(int

n) 8} 9

return -1

;10 }

[我對dfs的理解]

dfs其實十分簡單。它的主旨就是只考慮當下怎麼走,換句話說就是每次函式呼叫只走一步,走啊走,走啊走,不經意間發現自己走到了就返回結果就可以了。

你遇到乙個dfs先不要慌張地想它的全部,什麼遞迴出口啦、下一步怎麼走啦、返回什麼啊······你啥也別想,先寫引數,引數怎麼寫呢?其實無比簡單,肯定得有一或多個引數來表示現在所在的位置吧,其次你得有走到這兒的代價吧比如步數,花費什麼的。一般的dfs有這些引數足以。然後開始寫出口,出口那就更簡單了,直接上if幹就行,只要現在所在的位置是你要的目標位置就返回結果(一般就是剛才的代價)。如果你已經完成出口那麼你的dfs就已經完成一半了。之後就是下一步怎麼走,這個就是異常的簡單了。會走路嗎?會走路就行。只要呼叫下一層dfs就可以了(注意下一層dfs的引數會變,位置變成要去的位置,代價在原來基礎上加上走這步的代價)。如果下一層dfs的有返回值且是乙個有效值就返回這個值。最後就是應對無解,只需在函式返回乙個值代表無解就可以了。到此為止dfs就寫完了。是不是無與倫比的簡單呢?

[經典例題]

圖的m著色問題(color)

ac題解

n 皇后問題(queen.cpp)

ac題解

[如何學好dfs]

dfs應用廣泛,大部分難的dfs都是在走下一步上用工夫。

要想精通需要多見題一定要多寫!一定要多寫!一定要多寫!寫**是懶人幹的,但不是給懶到連**也懶得寫的人幹的!當你精通dfs後你才可以看到她的美麗,她的簡練,她的強大。

2018-10-12 22:00:58

我對SNS我理解

模仿也要做得比真的還好,比如qq,它的業務包括客戶端都是模仿別人的,但能做得像它那樣,的確不容易。sns在國內肯定能火的,不過現在的sns 只是太跟風了,沒有了自己的特點,很多的sns 很難看出它到底還是不是sns,或者它到底去哪個方向?自己都沒有弄清楚。所以sns在國內是很有機遇的。其實在當前經濟...

我對補碼的理解

計算機中用補碼表示乙個數是為了方便運算的,這樣減法也可以通過加法來實現。為什麼這樣設計行呢?主要是因為計算機里數的特殊儲存格式決定的,計算機裡用固定位數表示乙個數,超過該位置的部分會被捨棄。拿8byte的int型來說,無符號形式下,最大到1111 1111 255,超過了該範圍,會被截斷的,如 11...

我對SOA的理解

每次給客戶做工作流培訓,都要接觸不同的行業,但我每次都被問了乙個同樣的問題 hongsoft老師,請問應該怎麼理解soa?這個問題其實和工作流培訓關係不大,但現在如火如荼的soa的推廣都和bpel扯上了關係,而bpel又和工作流間 說不清,道不明 所以我還真要說說,我是怎麼理解soa的。7 80年代...