遞迴方法 記憶化dp)

2021-10-04 20:19:08 字數 598 閱讀 6753

比如 w(30,-1,0)w(30,−1,0)既滿足條件1又滿足條件2

這種時候我們就按最上面的條件來算

所以答案為1

輸入測試樣例由多組測試資料組成。每組測試資料第一行輸入三個整數 a , b ,c ( -20 <= a,b,c <= 20 )

如果a,b,c均為-1則退出程式

輸出輸出遞迴後的結果

樣例輸入 copy

1 1 1

2 2 2

-1 -1 -1

樣例輸出 copy

w(1, 1, 1) = 2

w(2, 2, 2) = 4

這題的思路呢就是把資料存進乙個三維陣列中,然後在遞迴時候發現這個數已經被計算過了 就直接輸出就不在繼續計算了。

#includeusing namespace std;

int dp[105][105][105];

int bfs(int x,int y,int z)

return 0;

}

A 數塔 (遞迴 記憶化陣列 DP)

在講述dp演算法的時候,乙個經典的例子就是數塔問題,它是這樣描述的 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?已經告訴你了,這是個dp的題目,你能ac嗎?輸入資料首先包括乙個整數c,表示測試例項的個數,每個測試例項的第一行是乙個整數n 1 n...

DP系列 遞推 遞迴 記憶化搜尋

一開始我想,從上往下的話,可以用遞迴,搜尋 dfs 所有可能的路徑,如下 int dfs int i,int j 從第一層開始遞迴到最後一層再從最後一層往回遞迴,一共遞迴2的n次方,顯然會t,那麼要怎麼優化一下呢?我們看到,在題中第三排的1會被第二排的3和8遞迴兩次,經歷了一次重複計算,這時我們可以...

記憶化搜尋 dp

例子 33 1132 3411 1先去找 1,1 的最長距離,很明顯為1 接著找 1,2 的最長距離,很明顯為1 接著找 1,3 的最長距離,為2 1,3 1 2 然後找 2,1 的最長距離,為2 2,1 1 1 然後是 2,2 的最長距離,如果沒有記憶化,那麼搜尋過程為 2,2 2 1 1 1 但...