動態規劃 POJ 1088 滑雪

2021-07-03 09:20:09 字數 992 閱讀 3997

意思就是把所有點存下來,按照高度排個序, 然後從小到大列舉,然後判斷當前的點的四個方向有沒有存在經過當前點更優的情況,並且那個點的高度比當前點的高度要高如果存在就更新,因為根據大小排了序,所以不會出現不會出現乙個點重複統計的情況那麼複雜度是o(

n2)

#include 

#include

#include

using namespace std;

const int maxn = 100;

intsum[maxn+10][maxn+10];

int dp[maxn+10][maxn+10], cnt;

pair pi[maxn*maxn+10];

bool cmp(pair a, pair b)

int main()

int x, y;

sort(pi, pi+cnt, cmp);

for(int i=0;iif(sum[x][y] < sum[x-1][y])

dp[x-1][y] = max(dp[x-1][y], dp[x][y]+1);

if(sum[x][y] < sum[x+1][y])

dp[x+1][y] = max(dp[x+1][y], dp[x][y]+1);

if(sum[x][y] < sum[x][y-1])

dp[x][y-1] = max(dp[x][y-1], dp[x][y]+1);

if(sum[x][y] < sum[x][y+1])

dp[x][y+1] = max(dp[x][y+1], dp[x][y]+1);

}int ans = 0;

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

for(int j=1;j<=m;j++)

ans = max(ans, dp[i][j]);

printf("%d\n", ans+1);

return

0;}

動態規劃 POJ1088 滑雪問題

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

POJ1088 動態規劃

題目鏈結 這個題目和最長子序列什麼的極為相似。不過之前都是一維,現在變成二維的了。僅此而已。因此我們可以想辦法把它先變成一維的。struct nodea 100 100 5 然後我們可以根據height排序,從最高點開始考慮,有點貪心的意思。和單源最短路徑dijkstra相似。int ma 100 ...

POJ 1088 動態規劃

今天晚上自習學習演算法,這裡就溫故知新寫一篇動歸的部落格 本題題目為漢語,此處就不翻譯了 解題思路 本題按照題意可以很容易的看出這是一道典型的動態規劃的題目。無非就是求出每個點周圍可以達到最大長度的點,依次繼續。本題目比較適合遞迴來進行動態規劃。動態規劃方程 f i j max 1 其中f i j ...