滑雪问题(dfs+dp)

题目引入

佑少喜欢上网冲浪。最近他在贴吧得知滑铲可以消灭老虎,于是决定每天都到山坡上练习滑铲。不过佑少还没学会反重力滑铲,所以滑的区域必须向下倾斜,而且当滑到坡底,他不得不再次走上坡。

为了帮助佑少延长滑铲时间,请你计算一个区域中最长的滑坡,区域由一个二维数组给出。

PS:已知一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度会减小。

代码实现及解析

//注意提议说的下降的最大高度是指最多经过了了几个点,而不是最大的高度差
#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];//二维dp
int ans = -1;void dfs(int x, int y)//dfs即运用递归,一条道走到黑,直到走不动(达到返回条件),才返回,继续尝试其他的路
{if (dp[x][y] > 1)//表示已经走过了这条路 return;//什么也不返回,作用相当于break 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);//二维dp的动态转移方程;即可以找出每个点对应的可以下滑的最大点数 }}
}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;//给dp数组初始化 }}for (int i = 0; i < r; i++){for (int j = 0; j < c; j++){dfs(i, j);ans = max(ans, dp[i][j]);//对dp矩阵里的每个点数取最大值,找出最大的下滑点数(即对每个点对应的最大下滑点数再取最大值) }}cout << ans;return 0;
}

emmm…就这些。。

滑雪问题(dfs+dp)相关推荐

  1. 记忆化搜索(DFS+DP) URAL 1223 Chernobyl’ Eagle on a Roof

    题目传送门 1 /* 2 记忆化搜索(DFS+DP):dp[x][y] 表示x个蛋,在y楼扔后所需要的实验次数 3 ans = min (ans, max (dp[x][y-i], dp[x-1][i ...

  2. (DFS+DP)滑雪(poj1088)

    题目 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道载一个区域中最长底 ...

  3. POJ_1088 滑雪(记忆型DP+DFS)

    Description Michael喜欢滑雪,这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...

  4. poj 滑雪(DFS)||(DP+递归)

    滑雪 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael ...

  5. 007:滑雪(百练/POJ1088)(DFS+DP)

    总时间限制: 1000ms 内存限制: 65536kB 描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者 ...

  6. NYOJ10: skiing(DFS + DP)

    skiing 时间限制:3000 ms  |  内存限制:65535 KB 难度:5 描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑 ...

  7. POJ1088 Bailian1088 滑雪【DFS+记忆化搜索】

    滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 114685 Accepted: 43807 Description Mic ...

  8. 洛谷 P1434 [SHOI2002] 滑雪(优先队列+dp / 记忆化搜索)

    P1434 [SHOI2002] 滑雪https://www.luogu.com.cn/problem/solution/P1434 优先队列+dp 本题状态转移方程一目了然 为了保证状态间无后效性, ...

  9. [P1434 [SHOI2002]滑雪](DFS,记忆化搜索)

    P1434 [SHOI2002]滑雪 题目描述 Michael喜欢滑雪.这并不奇怪,因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你 ...

最新文章

  1. FluxSink实例及解析
  2. Cocos Creator中按钮组件数组的使用
  3. 两个表循环的复杂度分析 征集
  4. 关于css方面的技巧
  5. RCNN系列实验的PASCAL VOC数据集格式设置
  6. java服务端集成极光消息推送--详细开发步骤
  7. windows计算器_计算Windows计算器中的错误
  8. Unity中表格制作与动态生成
  9. [网络安全自学篇] 十九.Powershell基础入门及常见用法(一)
  10. pytorch、torch、torchvision介绍
  11. Mac常见问题:如何使用文件保险箱加密 Mac 上的启动磁盘!
  12. 【神经网络】变分自编码大杂烩
  13. 虚拟机安装以及镜像激活码下载
  14. 不看别后悔,关于小儿夜啼、踹被、食欲差和积食,虫妈原创,55首发
  15. OPA 论坛为流程控制设备接口扩展了开放性、互操作性标准 - 第一部分
  16. 逆向分析CrackMe系列——CrackMe004之注册码算法分析
  17. Tushare原学习文档(九 电影票房)
  18. ElasticSearch基础:从倒排索引说起,快速认知ES
  19. linux下验证软件MD5值
  20. CAD 学习笔记 Mac

热门文章

  1. 计算机以及dos窗口常用快捷键
  2. matlab 轴系校中,轴系校中简介.ppt
  3. iOS比较常用的第三方及实例(不断更新中)
  4. C++面向对象总结——数据抽象与数据封装
  5. 随机手机号码_微信绑定了手机号码怎么解绑
  6. 微信小程序数组更新,但视图不更新的问题
  7. 电信客户流失数据分析(二)
  8. 5.1.2全景声音箱摆位_全景声音响系统,音箱应该如何摆位?(5.1.2、5.1.4篇)
  9. 秒杀竞拍屡创网络神话:馅饼还是美丽陷阱
  10. 华为m6更新鸿蒙吗,华为手机升级鸿蒙的方法,有哪位升级成功的吗?