坑爹啊啊啊啊啊啊
【题目描述】
滑雪是一项很受欢迎的体育运动,为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡。我们想知道载一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子:
12 3 4 5
1617 18 19 6
1524 25 20 7
1423 22 21 8
1312 11 10 9
我们可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-...-3-2-1更长。事实上,这是最长的一条。
【输入格式】
输入的第一行表示区域的行数R和列数C(1<= R,C <= 500)。下面是R行,每行有C个整数,代表高度h,0<=h<=10000。
【输出格式】
输出最长区域的长度。
【样例输入】
5 5
1 2 34 5
16 1718 19 6
15 2425 20 7
14 2322 21 8
13 1211 10 9
【样例输出】
25
有了前面的例子,不难看出,每个点可以由四个方向中比它高的点滑到。设DX= {0,1,0,-1},DY ={1,0,-1,0},F[I,J]表示滑到第I行第J列的点时存在的最长滑坡长度,则有状态转移方程:F[I,J]= Max{F[I+DX[K],J+DY[K]]}+1,其中要求满足第I+DX[K]行第J+DY[K]列的点存在且高度比第I行第J列的点的高度高。我们可以按照深度优先搜索的方式计算F,并利用二维数组Arr记录计算过的F值,