POJ 1088 滑雪 (深搜 DP)

2022-07-20 03:39:13 字數 1404 閱讀 2620

題目描述:

input

第一行輸入兩個數n,m代表滑梯範圍行n和列m(1 <= n,m <= 100)。下面是n行,每行有m個整數,代表高度h,(0<=h<=20000)

output

輸出乙個值,代表glory能夠在滑滑梯上面滑行的最長長度是多少

sample input

3 39 1 2

5 6 7

8 4 3

sample output

sample input

4 77 6 5 4 3 2 1

1 5 1 1 1 1 1

1 4 3 1 1 1 1

1 5 6 7 8 1 1

sample output

hint

樣例1:7->6->4->3 長度為4

面向題解的思路:

我覺得有點類似於求連通區域個數的問題,因為都是在一塊地圖上走嘛。

記錄的目的是為了防止超時。

陣列dp中存放的就是每個點所能夠走的最遠距離。

過程主要是記錄某個點能夠到達的最長的長度。然後由某乙個點向四個方向延伸,到達某點的時候,如果這點已經遍歷過的話,就直接返回值就行了,否則就由這一點去遍歷。

**:

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 

8 #include 9 #include 10 #include 11 #include

12 #include 13 #include 14

15#define n 100010

1617

using

namespace

std;

1819 typedef long

long

intll;

20int

n, m;

21int rec[110][110

];22

int grap[110][110

];23

int dx[4]=; int dy[4]=;

2425

bool torf(int i, int

j)28

//找距離此點的最遠距離

29int find_max(int i, int

j)43}44

return rec[i][j]=maxl+1; //

能夠走的最遠距離加上本身45}

46int

main()

4755}56

int ans=int_min;

57for(i=0; i)61}

62 printf("

%d\n

", ans);

63return0;

64 }

POJ1088 滑雪(簡單dp

題目要求 乙個人可以從某個點滑向上下左右相鄰四個點之一,當且僅當高度減小。求可以滑落的最長長度。題目解析 首先要先排一下序,因為只能高度遞減才能滑行。之後就很簡單了,就是簡單dp。即 要求的滑坡是一條節點遞減並依次相鄰的最長路徑,可以先根據高度將所有的點進行排序,在i點的時候,遍歷0 i 1個點 公...

POJ1088 滑雪 DP,查表法

dp 查表法 查表法的前提 1.不能迴圈查詢 例如,本題目 查詢dp i,j 需要在內部查詢dp i j 可能繼續進行遞迴,但因為遞迴過程總是沿著海拔降低,故不可能回過頭來再次查詢dp i,j 2.正確處理遞迴 查表 終止條件 本題中,如果點 i,j 旁邊沒有低於它的點,則len i j 為0,直接...

poj 1088 滑雪問題

這題剛開始我想到的是搜尋,但是超時了,所以要進行優化,聽說這是dp經典題,當時就瘋了,dp才初學,想到的是 dp i,j max dp 四個方向 但寫出來不太理想,主要是不懂的遞迴間數值的變化,導致一直出不來答案!後來看題解啊,改啊,搞啊,許久才出來個能a的 並且還0ms了,看來還得多熟悉下 inc...