程式設計題方法總結

2021-10-04 10:17:30 字數 502 閱讀 1632

鍊錶:

遍歷:bfs 和 dfs 本質上都是遍歷,所以只要是需要遍歷的演算法,理論上都可以使用 dfs 或者 bfs。它們各自的特點和適用場景如下:

1、bfs 由於是水波紋式的擴散,它可以用於一些求解最短路徑以及最優化問題,或者是可以用貪心演算法解決的問題上,例如第 126 題、第 127 題 單詞接龍,第 207 題、第 210 題:課程表,第 279 題:完全平方數,第 994 題:腐爛的橘子。

2、dfs 的基本思想也很簡單,就是一條道走到底,只要前面有路就一直向前走,不撞南牆不回頭。很多時候走迷宮就是這麼走的。

dfs 如果用於搜尋狀態空間,就是大名鼎鼎的回溯搜尋演算法,它厲害的地方在於,可以使用乙個狀態變數去搜尋所有的狀態空間,這一點是節約空間的。我們可以想象用一根繩子,在遍歷的時候變長變短,遍歷的同時儲存下來我們需要的那個狀態。

bfs 就做不到,bfs 為了遍歷就需要儲存全部的狀態,對於空間來說是個巨大的消耗。

回溯演算法

的例題我有總結:在第 46 題的 題解 的最後。

程式設計題(總結)

1 給你乙個01序列,hdlc協議處理的話,如果出現連續的5個1會補1個0。例如1111110,會變成11111010。現在給你乙個經過hdlc處理後的01序列,你需要找到hdlc處理之前的01序列。例如給你11111010 你需要輸出1111110解析 本題是基於計算機網路中的hdlc協議進行設計...

程式設計基礎題總結

由於instream.get可能會出錯,因此在使用instream.get時候,用while instream.fail 來迴圈get 此外 instream.fail 需要乙個起始狀態,因此總是在上面的while 開始之前先執行一次instream.get再執行迴圈 陣列 在initialisat...

演算法程式設計方法總結

1 通常用陣列表示,且通常從後往前思考,程式設計從前往後迭代實現,如兩個字串的匹配 2 寫出邊界函式,遞迴規律 1 回溯法 套用backtrack 2 前序 後續。3 利用遞迴左右子樹與或,如下,先判斷當前節點node 通常以葉子節點向上考慮 在與或左右子樹。bool haspathsum tree...