• 动态规划(记忆化搜索)


    AcWing 901. 滑雪

    给定一个 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−124−17−2−1。

    在给定矩阵中,最长的滑行轨迹为 25−24−23−…−3−2−125−24−23−…−3−2−1,沿途共经过 2525 个区域。

    现在给定你一个二维矩阵表示滑雪场各区域的高度,请你找出在该滑雪场中能够完成的最长滑雪轨迹,并输出其长度(可经过最大区域数)。

    输入格式
    第一行包含两个整数 R 和 C。

    接下来 R 行,每行包含 C个整数,表示完整的二维矩阵。

    输出格式
    输出一个整数,表示可完成的最长滑雪长度。

    数据范围
    1≤R,C≤300
    0≤矩阵中整数≤10000

    样例输入:

    1. 5 5
    2. 1 2 3 4 5
    3. 16 17 18 19 6
    4. 15 24 25 20 7
    5. 14 23 22 21 8
    6. 13 12 11 10 9

    样例输出:

    25

    思路:

    代码: 

    1. #include
    2. #include
    3. #include
    4. using namespace std;
    5. const int N = 310;
    6. int n, m;
    7. int h[N][N], f[N][N];
    8. int dx[4] = {-1, 1, 0, 0}, dy[4] = {0, 0, -1, 1};
    9. int dp(int x, int y)
    10. {
    11. int &v = f[x][y];
    12. if (v != -1) return v;
    13. v = 1;
    14. for (int i = 0; i < 4; i ++ )
    15. {
    16. int a = x + dx[i], b = y + dy[i];
    17. if (a >= 1 && a <= n && b >= 1 && b <= m && h[x][y] > h[a][b])
    18. {
    19. v = max(v, dp(a, b) + 1);
    20. }
    21. }
    22. return v;
    23. }
    24. int main()
    25. {
    26. cin >> n >> m;
    27. for (int i = 1; i <= n; i ++ )
    28. for (int j = 1; j <= m; j ++ )
    29. cin >> h[i][j];
    30. memset(f, -1, sizeof f);
    31. int res = 0;
    32. for (int i = 1; i <= n; i ++ )
    33. for (int j = 1; j <= m; j ++ )
    34. res = max(res, dp(i, j));
    35. cout << res << endl;
    36. return 0;
    37. }
  • 相关阅读:
    计算机网络,网络(OSI)七层模型,三次握手四次挥手,get与post请求区别,网络IO(BIO\NIO\AIO),TCP与UDP区别
    SD-WAN组网相较传统组网的优点
    【黑马程序员JVM学习笔记】02.内存结构
    7-10 LinkedHashSet
    创建型设计模式-原型模式
    大数据flink篇之二-基础实例wordcount
    go module 导入本地包
    L1-076 降价提醒机器人(Python3)
    【数仓】数据仓库高频面试题题英文版(1)
    许战海战略文库|主品牌老化:企业增长面临的关键挑战
  • 原文地址:https://blog.csdn.net/m0_73569492/article/details/134066111