遞迴與搜尋 一)

2021-09-19 04:32:11 字數 953 閱讀 6186

最近結束了最令我恐懼的動態規劃,現在一下子就學了遞迴與搜尋,感覺理解起來還是相對於動態規劃而言簡單的,遞迴和搜尋裡面的難點我認為有兩點,遞迴和搜尋都是第一步是找到遞迴和搜尋的實現方程,將一道題目中可以迴圈工作的部分找出來,然後寫出主體的方程,這樣一大部分就可以結束了。但還有乙個難點也是細節的完善,遞迴和搜尋的題每道題雖然思想都是各自的思想,但為什麼會有千千萬萬的題,就是因為每道題都有每道題都需要注意的細節,好比在座標的題目裡,細節就是通過兩個陣列設來實現,還有的細節是,可能在一些迴圈的陣列中,判斷可行性之間,會出現多次的1,0之間的轉換,這樣也會增大題目的難度。這幾天做的題很少,主要看了老師上課講的課件,在vjudge裡邊看了幾道題,覺得遞迴與搜尋並不簡單,但是我認為只要花時間在上面,一定可以做的很出色。

一、遞迴

遞迴的主要思想是將乙個給定的很大的問題,經過遞迴函式層層轉化為與自己型別相似的小問題,然後小問題十分好解決。遞迴的定義就是把問題向邊界的轉化的規則,遞迴一定會使問題越來越簡單,最後終止條件是題目給出,或直接簡單算出。

遞迴演算法解題通常有三個步驟:

1)分析問題、尋找遞迴:找出大規模問題與小規模問題的關係,這樣通過遞迴使問題的規模逐漸變小。

2)設定邊界、控制遞迴:找出停止條件,即演算法可解的最小規模問題。

3)設計函式、確定引數:設計函式體中的操作及相關引數。

二、搜尋

搜尋演算法是利用計算機的高效能來有目的地窮舉乙個問題的部分或所有的可能情況,從而求出問題的解的一種方法。

相比於單純的列舉演算法有了一定的方向性和目標性。演算法是在解的空間裡,從乙個狀態轉移(按照要求拓展)到其他狀態,這樣進行下去,將解的空間中的狀態遍歷,找到答案(目標的狀態)。

狀態(state)是對問題在某一時刻進展情況的數學描述,或者是數學抽象。

每乙個狀態都會是答案的乙個「可能的」解。狀態的轉移就是問題從乙個狀態轉移到另乙個狀態,這樣就可以進行搜尋的一步步延伸,最後要得到的解也是其中的乙個狀態。

繼續做題,繼續努力!

1152 二分搜尋 非遞迴與遞迴

time limit 1 sec memory limit 128 mb submit 1736 solved 634 submit status web board 在有序序列中查詢某一元素x。首先輸入乙個正整數n n 100000 表示該序列有n個整數,然後按從小到大的順序輸入n個整數 接著是乙...

BFS寬度搜尋 佇列 與DFS深度搜尋 遞迴

1 應用方面 bfs寬度搜尋用於尋找最優解 dfs深度搜尋用於遍歷尋找解 2 實現原理 bfs 利用佇列 層次來搜尋的 解釋一下 第一層 a 第二層 bcd 第三層 ef 第四層 gh 第4層 i 因為他是按層搜尋,就是說只要bfs搜尋到結果那麼一定是最優解 來個題目化的 將上圖ci連線,求從a到i...

總結 遞迴 記憶化搜尋 遞迴

遞迴函式執行時分為函式 前進段和返回段,真正明白並時刻記住這個才真正掌握了遞迴。寫遞迴時三點 開始定義的 引數,結束條件 邊界 若干if語句 遞迴呼叫及 返回段運算 一般引數中總有乙個代表遞迴層數。遞迴結束返回時要考慮是否修改了全域性變數,並將其改回,這個是為回溯做準備。記憶化搜尋 解決了遞迴時大量...