比如 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 但...