演算法練習 滑雪

2022-03-09 14:47:47 字數 2216 閱讀 8498

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。例子:

5 51   2   3   4   5

16   17   18   19    6

15   24   25   20    7

14   23   22   21   8

13   12   11   10   9

25

解題思路:

動態規劃+貪婪演算法 遞迴演算法

求乙個點的最大長度,先求相鄰點的最大長度

/*

*description

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

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 6

15 24 25 20 7

14 23 22 21 8

13 12 11 10 9

sample output

25*/

#include

#include

#define n 100

int map[n][n],len[n][n]; //

map存放點高度資訊,len存放對於點可以滑的最大長度

int n=0,m=0; //

n表示圖行數,m表示圖的列數

int max=0; //

整個圖的最大長度

//獲得 map[a,b] 點的最大長度,順帶算出目前整個圖中最大長度

int search(int a,int

b);//

動態規劃+貪心演算法

intmain()

memset(len,

0,sizeof(len)); //

初始化各個點的最大長度

for(i=0;i)

for(j=0;j)

printf(

"%d\n

",max);

}return0;

}int search(int a,int

b) //左

if(b-1>=0&&map[a][b] > map[a][b-1

]) //右

if(b+1

map[a][b+1

]) //下

if(a+1

map[a+1

][b])

len[a][b] = max+1

;

if(max

max =len[a][b];

return

len[a][b];

}

view code

演算法實踐 滑雪

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

poj 1088 小白演算法練習 滑雪 dfs記憶化

滑雪 time limit 1000ms memory limit 65536k total submissions 98816 accepted 37530 description michael喜歡滑雪百這並不奇怪,因為滑雪的確很刺激。可是為了獲得速度,滑的區域必須向下傾斜,而且當你滑到坡底,你...

動態規劃練習一 26 30滑雪(dp)

1 題意 矩陣內,只能從大的數到相鄰小的數,求其最大的長度 2 思路 每個位置儲存從四周到此位置的最大長度,首先要判斷是否是四周的數較大,對於每個位置求出的值儲存起來,防止重複運算,浪費時間,最後比較,輸出最大值 3 感想 老師上課講過 雖然印象比較模糊了,結合動態規劃套路,做出了此題,有所收穫 4...