POJ1088 滑雪(簡單dp

2021-09-06 21:01:02 字數 727 閱讀 1518

題目要求: 乙個人可以從某個點滑向上下左右相鄰四個點之一,當且僅當高度減小。求可以滑落的最長長度。

題目解析:

首先要先排一下序,因為只能高度遞減才能滑行。之後就很簡單了,就是簡單dp。

即:要求的滑坡是一條節點遞減並依次相鄰的最長路徑,可以先根據高度將所有的點進行排序,在i點的時候,遍歷0~i-1個點(公升序排序,i前面的點的高度一定小於等於i),取相鄰點間的大的路徑長度

**如下:

#include #include 

#include

#include

#include

#include

#define n 400

#define inf 0x3f3f3f3ftypedef

intll;

using

namespace

std;

inttt;

struct

node

q[20010

];int cmp(const

void *a,const

void *b)

intmain()

}qsort(q,tt,

sizeof(q[0

]),cmp);

for(int i=1;i)}}

printf(

"%d\n

",mat);

}return0;

}

POJ1088 滑雪 DP,查表法

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

POJ 1088 滑雪 (深搜 DP)

題目描述 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 sam...

poj 1088 滑雪問題

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