POJ 1088 DP 遞迴解法 迴圈解法

2021-07-24 03:45:59 字數 2053 閱讀 5748

滑雪time limit:1000ms

memory limit:65536k

total submissions:93021

accepted:35199

description

michael喜歡滑雪百這並不奇怪, 因為滑雪的確很刺激。可是為了獲得速度,滑的區域必須向下傾斜,而且當你滑到坡底,你不得不再次走上坡或者等待公升降機來載你。michael想知道載乙個區域中最長底滑坡。區域由乙個二維陣列給出。陣列的每個數字代表點的高度。下面是乙個例子 

1  2  3  4 5

16 17 18 19 6

15 24 25 20 7

14 23 22 21 8

13 12 11 10 9

乙個人可以從某個點滑向上下左右相鄰四個點之一,當且僅當高度減小。在上面的例子中,一條可滑行的滑坡為24-17-16-1。當然25-24-23-...-3-2-1更長。事實上,這是最長的一條。

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

13 12 11 10 9

sample output

25

解題歷程:

這是第三次周賽的h題,當時第一反應是用bfs做,每個點查詢一遍,但覺得可能會tle,後來實踐中也證實了這一點。

題目提示為dp,於我的理解中,dp無非就是兩種方式:遞迴 or 遞推

遞迴演算法:

#include #include #include #include #define n 101

using namespace std;

int map[n][n],len[n][n];

int dir[4][2]=,,,};

int r,c;

int dp(int i,int j)

部分 }

}len[i][j]=maxx+1;

return maxx+1;}

int main()

printf("%d\n",mx);

}return 0;

}

遞推演算法:

以前做過的最長合法序列(hoj 10179):

有k個整數a[1],a[2]...a[k],你需要從前往後選出若干個數,使得每乙個後面的數都要大於或等於前面的數.例如,對於系列1,4,2,5,2,3,選出1,2,2,3是合法的,但是選出4,2,3是不合法的.

這也是一道經典的遞推dp,但區別在於:

最長合法序列 它的 狀態轉移方程:

dp(i,a[i])=max+1;

它寫成遞推的形式是一維的:

而這道題,其狀態轉移方程:

dp(i,j,h[i][j])=

max + 1;

如果直接按照圖的結構遞推,那麼就將是二維的形式,這樣的話我並不會寫遞推。所以,將所有點按照h降序排列,這樣就轉化為一維的遞推式。

**如下:

#include#include#includeusing namespace std;

int r,c,dir[4][2]=,step[101][101],h[101][101];

struct dotmap[10001];

bool judge(int rr,int cc)

int main()

} } for(int i=0;i

POJ 1088 DP 記憶化搜尋

題意 給出山的高度圖,求出最長的一條下降路線。思路 很容易就想到了用dp,但是很難寫出遞推的順序。當然,我們可以記錄座標,按照高度進行排序,再dp,但是這樣的代價是不是有點大呢。所以,我們要用記憶化搜尋來完成這件事情。其實在狀態轉移的過程中,就隱含了dp的順序。如下 include include ...

poj1088 dp 記憶化搜尋 (入門好題)

題目意思很簡單,一開始我直接dfs深搜,超時果果的,看了題解以後,學習了記憶化搜尋,就是記錄下已經求出的當前結點的最大值,在之後訪問到這個節點時,就能直接呼叫結果,減少重複計算。是一道好題。以下為 include include include include using namespace std...

POJ 1088 滑雪 記憶遞迴型dp

time limit 1000ms memory limit 65536k description michael喜歡滑雪百這並不奇怪,因為滑雪的確很刺激。可是為了獲得速度,滑的區域必須向下傾斜,而且當你滑到坡底,你不得不再次走上坡或者等待公升降機來載你。michael想知道載乙個區域中最長底滑坡。...