(七)窮竭搜尋

2021-06-22 02:06:35 字數 799 閱讀 7104

遞迴函式

再次呼叫自身的行為成為遞迴

應用與斐波那契數列

棧實現一種lifo能力,具備push和pop功能

c++裡面已經含有這種函式

佇列實現一種fifo能力,具備push和pop功能

c++裡面已經含有這種函式

深度優先搜尋(dfs)

思想:從某個狀態開始,不斷轉移狀態,直至無法轉移,然後回退前一步,繼續轉移其他狀態,如此不斷迴圈,直至找到最終解。

利用深度優先搜尋的思想解下題:

題二:

廣度優先搜尋(dfs)

思想:總是搜尋距離初始狀態近的狀態。

深度優先搜尋(隱式)利用棧進行計算,而廣度優先搜尋利用了佇列進行計算。

利用廣度優先搜尋思想解下題:

特殊狀態的列舉

利用n個元素共n的階乘種不同的排列生成出來。

剪枝思想:有些狀態無論如何都不存在解的時候,我們需要直接跳過搜尋,這一方法成為剪枝。

棧記憶體和堆記憶體

主調函式所擁有的區域性變數儲存在特點的記憶體區域,這些區域成為棧,另外用new和malloc申請的區域成為堆記憶體。棧內存在程式啟動時被統一分配,並不再擴大。全域性變數被儲存在堆記憶體區。

POJ 2718 窮竭搜尋

給一串大於0且小於9的數字,將其分成兩串數字且差值最小。長度大於0的數字不能以0開始。兩個子串長度相同或相差1時它們的差值最小。使用next permutation生成全排列後,用前一半的數字減後一半的數字取絕對值。include include include include define max...

AOJ 0525 窮竭搜尋

題意 傳送門 aoj 0525 題意即翻轉部分行或列,使得最終為 0 或 1 的煎餅數目最大。列數 1 c 10 000 列舉會翻車,行數 1 r 10 可以直接列舉 01 狀態,按列增加 0 或 1 的煎餅數最大值,之後更新答案即可。include include include include ...

演算法初級之窮竭搜尋

窮竭搜尋 將所有可能性羅列出來,在其中總能找到乙個答案。1.1遞迴 n n n 1 1.2 棧 後進先出 1.3 佇列 先進先出 1.4 深度優先搜尋dfs 從某個狀態開始,不斷轉移狀態直到無法轉移後回退一步,繼續轉移到其他狀態,不斷重複,知道找到最終解。eg 解數獨 遞迴 問 給定整數a1 a2 ...