給定乙個r行c列的矩陣,表示乙個矩形網格滑雪場。
矩陣中第 i 行第 j 列的點表示滑雪場的第 i 行第 j 列區域的高度。
乙個人從滑雪場中的某個區域內出發,每次可以向上下左右任意乙個方向滑動乙個單位距離。
當然,乙個人能夠滑動到某相鄰區域的前提是該區域的高度低於自己目前所在區域的高度。
下面給出乙個矩陣作為例子:
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-2-1。
在給定矩陣中,最長的滑行軌跡為25-24-23-…-3-2-1,沿途共經過25個區域。
現在給定你乙個二維矩陣表示滑雪場各區域的高度,請你找出在該滑雪場中能夠完成的最長滑雪軌跡,並輸出其長度(可經過最大區域數)。
輸入格式
第一行包含兩個整數r和c。
接下來r行,每行包含c個整數,表示完整的二維矩陣。
輸出格式
輸出乙個整數,表示可完成的最長滑雪長度。
資料範圍
1≤r,c≤300,
0≤矩陣中整數≤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
分析:在一般
搜尋的基
礎之上增
加了乙個
陣列來記
錄已經被
計算過的
方案的結
果,下次
再搜尋到
該狀態時
可以直接
返回結果
。在一般搜尋的基礎之上增加了乙個陣列來記錄已經被計算過的方案的結果,\\下次再搜尋到該狀態時可以直接返回結果。
在一般搜尋的
基礎之上
增加了一
個陣列來
記錄已經
被計算過
的方案的
結果,下
次再搜尋
到該狀態
時可以直
接返回結
果。 本題對
每個點向
四個方向
搜尋,若
某個方向
上的元素
是合法的
,就繼續
從這個元
素往下搜
索。
本題對每個點
向四個方
向搜尋,
若某個方
向上的元
素是合法
的,就繼
續從這個
元素往下
搜尋。
**:
#include
#include
#include
using
namespace std;
const
int n=
310;
int r,c,a[n]
[n],f[n]
[n];
int dir[4]
[2]=
,,,}
;intdp(
int x,
int y)
return v;
}int
main()
DP 滑雪 記憶化搜尋)
時間限制 1000 ms 記憶體限制 65536 kb 提交數 312 通過數 139 小明喜歡滑雪,因為滑雪的確很刺激,可是為了獲得速度,滑的區域必須向下傾斜,當小明滑到坡底,不得不再次走上坡或等著 來載他,小明想知道在乙個區域中最長的滑坡。滑坡的長度由滑過點的個數來計算,區域由乙個二維陣列給出,...
記憶化搜尋 DP 滑雪
description michael喜歡滑雪百這並不奇怪,因為滑雪的確很刺激。可是為了獲得速度,滑的區域必須向下傾斜,而且當你滑到坡底,你不得不再次走上坡或者等待公升降機來載你。michael想知道載乙個區域中最長底滑坡。區域由乙個二維陣列給出。陣列的每個數字代表點的高度。下面是乙個例子 1 2 ...
滑雪 dp 記憶化搜尋
給定乙個r行c列的矩陣,表示乙個矩形網格滑雪場。矩陣中第 i 行第 j 列的點表示滑雪場的第 i 行第 j 列區域的高度。乙個人從滑雪場中的某個區域內出發,每次可以向上下左右任意乙個方向滑動乙個單位距離。當然,乙個人能夠滑動到某相鄰區域的前提是該區域的高度低於自己目前所在區域的高度。下面給出乙個矩陣...