滑雪 百練1088 dp dfs

2021-07-09 20:52:05 字數 669 閱讀 8299

解題思路 

l(i,j)表示從點(i,j)出發的最長滑行長度。  乙個點(i,j), 如果周圍沒有比它低的點,l(i,j) = 1  

否則  

遞推公式: l(i,j)  等於(i,j)周圍四個點中,比(i,j)低,且l值最大的那個點 的l值,再加1   

轉移方程很容易想到,但是我沒想到的是需要結合dfs,我又不會dfs(什麼都不會),所以一道很簡單的水題都做不出來,看題解的時候有一步不是很懂,就是按高度從小到大排序,想不明白為什麼,但是dp+dfs時不需要排序,所以不知道排序的方法怎麼做的,而且排序的複雜度為n^2,但是dp+dfs應該不是n^2,要比n^2大一點,所以還待需弄懂。

我寫的很挫,所以看別人的**時很難看懂。。。。wuwu~~~

#include #include #include #include #include using namespace std;

#define n 105

int dp[n][n],n,m,a[n][n];

//dp[i][j]表示的是以a[i][j]為開始的最長路徑,

//表示以a[i][j]為結尾的最長路徑也可以,只需dfs稍微改變一下符號

int dfs(int i,int j)

int main()

for( i=1; i<=n; i++)

}cout<

百練1088 滑雪 DP DFS

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

百練 1088 滑雪

一向不喜歡囉裡囉嗦,冗長的 有什麼不合適的地方,還望多指教 input 輸入的第一行表示區域的行數r和列數c 1 r,c 100 下面是r行,每行有c個整數,代表高度h,0 h 10000。output 輸出最長區域的長度。sample input 5 51 2 3 4 5 16 17 18 19 ...

POJ 百練 1088 滑雪

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