NYOJ 10 skiing 深搜和動歸

2021-09-07 10:53:02 字數 1261 閱讀 9986

時間限制:

3000 ms  |  記憶體限制:

65535 kb

難度:5

描寫敘述

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更長。其實,這是最長的一條。

輸入

第一行表示有幾組測試資料,輸入的第二行表示區域的行數r和列數c(1 <= r,c <= 100)。以下是r行,每行有c個整數,代表高度h。0<=h<=10000。

後面是下一組資料;

輸出輸出最長區域的長度。

演算法分析:

一看本題就感覺這不是才看過的單調遞減子串行問題麼。但這個難點在於資料並非線性的,每一步都有四個方向可走。於是乎。,深搜解此題必須是手到擒來啊。。注意中間的剪枝問題。利用記憶話陣列去除反覆的計算類似於遞迴型dp,以下看乙個來自網上的深搜**:

#include#includeint a[101][101],visit[101][101];

int dx[4]=;

int dy[4]=;

int s,t,max,r,c;

int bfs(int x,int y)

for(int k=0;k<4;k++)

} } printf("%d\n",ans); } return 0; }

#include#includeusing namespace std;

int map[101][101];

int d[101][101];

struct nodetmap[10001];

int k;

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

int max(int a,int b)

int comp(node a,node b)

} return ans; } int main() sort(tmap,tmap+k,comp); cout<

NYOJ 10 Skiing 解題報告

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

NYOJ 10 Skiing 記憶化搜尋

題目的意思是 給你乙個n m的矩陣 讓你從中找出一條最長的遞減序列 能走四個方向 上下左右 這道題需要用到 記憶化搜尋 普通搜尋會超時 記憶化搜尋就是在原本記錄該點是否到過的陣列中儲存一些其他資訊 比如上一次到這個點的序列長度是多少 或者直接在這個陣列中儲存答案 兩種都可以 include incl...

NYOJ 10 skiing 記憶化搜尋)

想著藍橋杯還有20天左右就開始了,計畫是把歷年真題都敲一遍,再把之前寫過的nyoj的題目重新的複習一下,並且就是把所有寫過的題重新的整理到部落格上面來,這是開始的第一篇部落格,接下來我會好好的整理好我的部落格,養成乙個良好的 風格,跟複習習慣,一步一步的成長,慢慢的掙扎,直到有一天,可以以長劍嘯天 ...