function(記憶化搜尋)

2021-10-20 18:20:06 字數 782 閱讀 8303

思路:也是看了後面的題解才理解和學會這個演算法,這是一道記憶化搜尋的好題,因為題目描述了後面的數會非常大,所以我們不可能每個數字都去進行一次遞迴,我們可以將已經計算過的數字儲存起來,當我們要用到它時,判斷它是否已被記錄,如果已被記錄那麼我們就直接返回裡面儲存的值即可:

上**:

#include

using

namespace std;

#define ll long long

ll f[25]

[25][

25];//用乙個三維陣列來儲存,不用把他想得太抽象話,只要把他想象成對應的三位數裡面儲存的結果即可

bool vis[25]

[25][

25];//記憶化搜尋,如果搜過的數字就將他標記為已搜尋,然後直接返回裡面儲存的值即可

ll a,b,c;

//三個數字,因為會比較大記得開longlong

ll mw

(ll a,ll b,ll c)

else

vis[a]

[b][c]

=true

;//當前三位數字搜尋完了就將他們標記為已搜尋

return f[a]

[b][c]

;//返回結果即可

}int

main()

else

}return0;

}

洛谷P1464 Function 記憶化搜尋

對於乙個遞迴函式w a,b,c w a,b,c 如果a le 0a 0 or b le 0b 0 or c le 0c 0就返回值11.如果a 20a 20 or b 20b 20 or c 20c 20就返回w 20,20,20 w 20,20,20 如果a absi2011 比如 w 30,1,...

洛谷 P1464 Function 記憶化搜尋

p1464 function 提交對於乙個遞迴函式w a,b,c w a,b,c 如果a le 0a 0 or b le 0b 0 or c le 0c 0就返回值11.如果a 20a 20 or b 20b 20 or c 20c 20就返回w 20,20,20 w 20,20,20 如果a ab...

記憶化搜尋

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