题目描述:
小杜喜欢上网冲浪。最近他在贴吧得知滑铲可以消灭老虎,于是决定每天都到山坡上练习滑铲。不过小杜还没学会反重力滑铲,所以滑的区域必须向下倾斜,而且当滑到坡底,他不得不再次走上坡。
为了帮助小杜延长滑铲时间,请你计算一个区域中最长的滑坡,区域由一个二维数组给出。
PS:已知一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度会减小。

输入格式:
输入的第一行为表示区域的二维数组的行数 n 和列数 m。下面是n 行,每行有 m 个数,代表高度。

输出格式:
输出区域中最长滑坡的长度。

输入样例:
例如:

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
输出样例:
在这里给出相应的输出。例如:

25

分析&解法

这是典型的深度优先搜索找最长路径,只需遍历每个点找出其最长路径,最后再比较得出最长路径。

代码

#include<iostream>
#include<algorithm>
using namespace std;
int Move[4][2] = { {1,0},{0,1},{-1,0},{0,-1} };
int r, c;
int map[201][201];
int dp[201][201];
int ans = -1;
void dfs(int x, int y)
{if (dp[x][y] > 1)return;for (int i = 0; i < 4; i++){int tx = x + Move[i][0];int ty = y + Move[i][1];if ((tx < r) && (tx >= 0) && (ty < c) && (ty >= 0) && (map[tx][ty] < map[x][y])){dfs(tx, ty);dp[x][y] = max(dp[x][y], dp[tx][ty] + 1);}}
}
int main()
{cin >> r >> c;for (int i = 0; i < r; i++){for (int j = 0; j < c; j++){cin >> map[i][j];dp[i][j] = 1;}}for (int i = 0; i < r; i++){for (int j = 0; j < c; j++){dfs(i, j);ans = max(ans, dp[i][j]);}}cout << ans;return 0;
}

小杜滑铲 DFS 最长路径相关推荐

  1. 秋招笔试题(其一)华为笔试岛屿水沟最长路径

    """ 给出一个整数矩阵代表岛屿,其数值表示高度,请找出下雨时可以形成的最长水沟,返回其长度(每经过一个单元格长度加1). 对于每个单元格,你可以往上,下,左,右四个方向 ...

  2. 算法提高课-动态规划-树形DP-AcWing 1072. 树的最长路径:dfs写法

    题目分析 来源:acwing 分析: 树的最长直径:距离最远的两个点之间的距离,这里是带边权的情况. 在没有边权(或者边权都是1)的时候,树的直径也是最远两个点的距离. 样例对应的树如下,树的直径= ...

  3. 201503-4 网络延时 (本质是求树的最长路径)

    树的最长路径 题目: 思路: 求解方法: 动态规划三部曲 1)状态定义 2)状态转移方程 (1)ACWing上的问题 (2) POJ上的问题 (3) CCF-CSP上的问题 参考博文: <1&g ...

  4. Millenium Leapcow POJ - 2111 (千禧年跳牛)(贪心找最长路径,记忆化)

    题意: 给你一个矩阵,问你按照象棋马的走法,下一步比上一步的数大,问长度最长的序列是多长,然后输出序列.如果有多个最长序列输出字典序最小的那个.类似滑雪,找出最长路径,多个答案 输出字典序最小的. 思 ...

  5. Acwing 1072. 树的最长路径

    Acwing 1072. 树的最长路径 题意: 每个边有权值,求树的直径 题解: 两遍dfs可以求,这里用树形dp的方法,我们将1作为根节点来看这棵树 我们可以将点看作是钉子,边就是挂在钉子上的绳子, ...

  6. HDU3534 给你一个树让你找出其中最长路径以及个数数

    Description In the Datastructure class of HEU, the teacher asks one problem: How to find the longest ...

  7. 3006基于二叉链表的二叉树最长路径的求解(附思路)

    描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写算法求出该二叉树中第一条最长的路径. 输入 多组数据.每组数据一行,为二叉树的先序序列(序列中元素为'0'时,表示该结点为 ...

  8. AcWing1072. 树的最长路径(树形DP)题解

    题目传送门 题目描述 给定一棵树,树中包含 n 个结点(编号1~n)和 n−1 条无向边,每条边都有一个权值. 现在请你找到树中的一条最长路径. 换句话说,要找到一条路径,使得使得路径两端的点的距离最 ...

  9. pyecharts实现多节点、长路径的sankey桑基图

    1 画桑基图一个容易出错的细节 pyecharts︱交互式pyecharts的相关使用教程 简单的用pyecharts实现超多节点.较长路径的桑基图,一个样图: 起先拿网络教程里的数据跑的时候没有任何 ...

最新文章

  1. Spring 中 @Component、@Service 等注解如何被解析?
  2. Delphi 2010 refactor / refactoring 重构不能使用的原因以及解决
  3. JAVA 学到什么水平就可以转战 Android 了?
  4. rpm安装mysql报错_【CentOS-65】通过rpm包安装mysql57解决了server报错和mysqld启动报错的问题...
  5. ajax获取shiroehcache,Shiro – 使用EhCache缓存
  6. 值大于为此列指定的允许精度_电能质量测试精度会受到哪些因素影响?如何解决?...
  7. SpringBoot项目利用maven自定义打包结构
  8. Spring中引入其他配置文件
  9. javascript-内置对象-date对象-JSON对象-Math对象
  10. [Aaronyang] 写给自己的WPF4.5 笔记17[Page实现页面导航]
  11. GIT回滚master分支到指定tag版本 并提交远程仓库
  12. O(n^2)以及O(nlogn)时间复杂度的排序算法
  13. MATLAB破解版解决帮助文档需要许可证的问题
  14. 步进电机驱动器介绍 --PWM
  15. 应用程序无法正常启动 0xc0150002
  16. java 爬取网页的数据_java爬取网页数据
  17. [蓝桥杯解题报告]第九届蓝桥杯大赛省赛2018(软件类)真题C++A组 Apare_xzc
  18. 严蔚敏版数据结构——顺序栈
  19. distinct返回null报错_distinct
  20. 自动驾驶软件开发人才现状_新技术改变传统出行方式 多国自动驾驶行业现状及人才需求分析...

热门文章

  1. 神经网络架构搜索——可微分搜索(DARTS)
  2. 线性加权平均 c语言程序,【求助】编的一个加权平均分计算程序,总是出错。求高手指点~...
  3. 解决Retrying connect to server
  4. 八十二烷基笼状聚倍半硅氧烷poss无色透明黏稠液体|提高颜料分散性
  5. 引用防删——JAVA设计模式总结之六大设计原则
  6. 计算机毕业设计Python+uniapp校园服务微信小程序(小程序+源码+LW)
  7. vue 父组件重新加载子组件
  8. WannaCrypt 防护补丁MS17-10
  9. 手牵手带你安装zookeeper
  10. 树莓派4初次使用笔记(Pi OS ROS Kinetic安装)