洛谷P1434 滑雪

2021-09-25 21:06:49 字數 1211 閱讀 2969

90分**:

#include

#include

using namespace std;

int r,c,m[

105]

[105

],ans=

1,v[

105]

[105];

int dx[5]

=,dy[5]

=;voids(

int x,

int y,

int h,

int l)

//x,y:座標 h:高度 l:長度

intmain()

printf

("%d"

,ans)

;return0;

}

ac**:

#include

#include

#include

using namespace std;

int r,c,m[

105]

[105

],ans=

1,v[

105]

[105];

int dx[5]

=,dy[5]

=;ints

(int x,

int y,

int h,

int l)

//x,y:座標 h:高度 l:長度

return v[x]

[y];

}int

main()

兩份**的思路是一致的,都是對每乙個點進行dfs並更新最大值。

在90分**裡,對於起點不同,終點相同,長度不同的兩條路徑,會對公共部分進行重複遍歷,導致tle;在ac**中,採用了記憶化的搜尋方法優化時間複雜度,在這裡分析其正確性:

(1)由於採用返回值為int的函式進行遍歷,返回值的意義是包含遍歷起點的最長路徑長度,在遍歷時的越界或不合題意情況就應該返回0;

(2)對於每次遍歷,都記載了從該點出發能獲得的最大長度,因此在遍歷被遍歷過的點時,可以直接使用之前所得到的資料;

(3)求max的操作確保了在從某點出發的路徑不止一條時,所記錄的是從該點出發能獲得的 最大 長度。

自我總結:思維還不夠成熟,只能想到暴力,應當多做鍛鍊思維的題目補齊短板。

洛谷 P1434 滑雪

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

洛谷 p1434 滑雪

洛谷 p1434 滑雪 1.附上70分 include include int a 100 10 100 10 int vis 100 10 100 10 int r,c int next 2 上 下 左 右 int max 0 void dfs int step,int r1,int c1 int...

洛谷P1434滑雪

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