記憶化搜尋

2021-08-15 21:15:34 字數 568 閱讀 1964

題目:

任意輸入乙個數n(0

題目分析:

說簡單一點就是,我們可以記錄一下我們以前搜尋過的資訊,這樣以後就不用重複的遞迴,來找取答案了,相信大家都應該已經懂了!

下面上乙個**:

memory儲存的是當前已經搜尋過記錄的資訊:

演算法分析:

這裡找兩個數是否互質,只要把大的對小的取餘,重複這樣的動作,如果他們互質那麼就餘1,若不是互質則餘0,(在**中因為初始化資訊都是0,所以這裡不能標記又為0只能標記成不一樣的數,所以就標記成2!!!)

#include

using

namespace

std;

struct numberber;

int num[1005],n,memory[1005][1005],ans;

int memory_search(int a,int b)

int main()

printf("%d",ans);

return

0;}

相信大家看了這篇部落格之後,就可以明白記憶化搜尋的原理了!!!

記憶化搜尋

演算法上依然是搜尋的流程,但是搜尋到的一些解用 動態規劃 的那種思想和模式作一些儲存。一般說來,動態規劃總要遍歷所有的狀態,而搜尋可以排除一些無效狀態。更重要的是搜尋還可以剪枝,可能剪去大量不必要的狀態,因此在空間開銷上往往比動態規劃要低很多。記憶化演算法在求解的時候還是按著自頂向下的順序,但是每求...

記憶化搜尋

記憶化搜尋 演算法上依然是搜尋的流程,但是搜尋到的一些解用動態規劃的那種思想和模式作一些儲存。記憶化演算法在求解的時候還是按著自頂向下的順序,但是每求解乙個狀態,就將它的解儲存下來,以後再次遇到這個狀態的時候,就不必重新求解了。例1.題目描述 給從左至右排好隊的小朋友們分糖果,要求 1.每個小朋友都...

記憶化搜尋

原文 感謝作者。一.動態規劃 動態規劃 dynamic programming 與 分治思想 有些相似,都是利用將問題分 為子問題,並通過合併子問題的解來獲得整個問題的解。於 分治 的不同之處在 於,對於乙個相同的子問題動態規劃演算法不會計算第二次,其實現原理是將每乙個計算過的子問題的值儲存在乙個表...