題目意思很簡單,一開始我直接dfs深搜,超時果果的,看了題解以後,學習了記憶化搜尋,就是記錄下已經求出的當前結點的最大值,在之後訪問到這個節點時,就能直接呼叫結果,減少重複計算。是一道好題。
以下為**:
#include #include #include #include using namespace std;
int r,c,a[150][150],len[150][150];
int xr=;
int yr=;
int dfs(int x,int y)
len[x][y]=sum;
return sum;
}int main()
printf("%d\n",ret);
}return 0;
}
POJ 1088 DP 記憶化搜尋
題意 給出山的高度圖,求出最長的一條下降路線。思路 很容易就想到了用dp,但是很難寫出遞推的順序。當然,我們可以記錄座標,按照高度進行排序,再dp,但是這樣的代價是不是有點大呢。所以,我們要用記憶化搜尋來完成這件事情。其實在狀態轉移的過程中,就隱含了dp的順序。如下 include include ...
poj 1088 滑雪(記憶化搜尋 dp)
description michael喜歡滑雪百這並不奇怪,因為滑雪的確很刺激。可是為了獲得速度,滑的區域必須向下傾斜,而且當你滑到坡底,你不得不再次走上坡或者等待公升降機來載你。michael想知道載乙個區域中最長底滑坡。區域由乙個二維陣列給出。陣列的每個數字代表點的高度。下面是乙個例子 1 2 ...
POJ 1088 滑雪 DP 記憶化搜尋
input 輸入的第一行表示區域的行數r和列數c 1 r,c 100 下面是r行,每行有c個整數,代表高度h,0 h 10000。output 輸出最長區域的長度。sample input 5 5 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8...