码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 动态规划(记忆化搜索)


    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. }
  • 相关阅读:
    竞赛选题 深度学习手势识别算法实现 - opencv python
    彩虹外链网盘界面UI美化版超级简洁好看
    2.7HDR与LDR
    为Mkdocs网站添加评论系统(以giscus为例)
    轻量封装WebGPU渲染系统示例<2>-彩色立方体(源码)
    linux部署运维3——centos7.9离线安装部署配置涛思taos2.6时序数据库TDengine以及java项目链接问题处理(二)
    欧拉函数公式证明
    湘南学院2023级成考新生课程学习安排及成绩评定标准
    程序员面试金典 - 面试题 17.17. 多次搜索
    Java项目:汽车租车管理系统(java+SSM+HTML+JSP+bootstrap+layui+Mysql)
  • 原文地址:https://blog.csdn.net/m0_73569492/article/details/134066111
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号