滑雪问题(深度优先+动态规划)

 滑雪问题

Description

Michael喜欢滑雪这并不奇怪,因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。

Input 输入的第一行表示区域的行数n和列数m(1 <= n,m <= 100)。下面是n行,每行有m个整数,代表高度h,0<=h<=10000。

Output 输出最长区域的长度。

Sample Input 1

5 5

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

Sample Output 1

25

#include 
using namespace std;
const int MAX_ROWS = 100;
const int MAX_COLS = 100;
int directions[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};//定义方向数组 下(1,0)右(0,1)上(-1,0)左(0,-1)
bool isValid(int x, int y, int rows, int cols)//判断下一个要访问的是不是在区域内
{
    if((x>=0)&&(x=0)&&(y> n >> m;

    int matrix[MAX_ROWS][MAX_COLS];

    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < m; ++j)
        {
            cin >> matrix[i][j];
        }
    }

    int result = findLongestSkiingPath(matrix, n, m);
    cout << result << endl;
    return 0;
}

你可能感兴趣的:(深度优先,动态规划,算法)