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

Description

Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子
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-16-1。当然25-24-23-…-3-2-1更长。事实上,这是最长的一条。

Input

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

Output

输出最长区域的长度。

Sample Input

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

25

问题链接:POJ1088 Bailian1088 滑雪
问题简述:(略)
问题分析
    简单的搜索问题,用DFS实现,需要使用记忆化搜索来加快搜索速度。
    这个题也可以用DP来实现,计算二维最长子序列。
程序说明:(略)
参考链接:(略)
题记:(略)

AC的C++语言程序如下:

/* POJ1088 Bailian1088 滑雪 */#include <iostream>
#include <cstdio>
#include <cstring>using namespace std;const  int M = 4;
int drow[] = {-1, 1, 0, 0};
int dcol[] = {0, 0, -1, 1};const int H = 100;
int r, c, h[H][H], len[H][H];int dfs(int row, int col)
{if(len[row][col] != -1) return len[row][col];int maxh = 1;for(int i = 0; i < M; i++) {int nextrow = row + drow[i];int nextcol = col + dcol[i];if(nextrow >= 0 && nextrow < r && nextcol >= 0 && nextcol < c)if(h[nextrow][nextcol] > h[row][col])maxh = max(maxh, dfs(nextrow, nextcol) + 1);}return len[row][col] = maxh;
}int main()
{while(~scanf("%d%d", &r, &c)) {for(int i = 0; i < r; i++)for(int j = 0; j < c; j++)scanf("%d", &h[i][j]);int ans = 0;memset(len, -1, sizeof(len));for(int i = 0; i < r; i++)for(int j = 0; j < c; j++)ans = max(ans, dfs(i, j));printf("%d\n", ans);}return 0;
}

POJ1088 Bailian1088 滑雪【DFS+记忆化搜索】相关推荐

  1. UVA10285 Longest Run on a Snowboard【DFS+记忆化搜索】

    Michael likes snowboarding. That's not very surprising, since snowboarding is really great. The bad ...

  2. dfs记忆化搜索(带限制的选择问题) 讲解:LeetCode打家劫舍||| / 蓝桥 地宫取宝/蓝桥 k进制数//剪格子//方格分割

    记忆化递归的必要性: 普通的递归可能会重复求解某一值,类似斐波那契数列.同样的子问题可能会被求解多次,这样就会很慢很慢很慢 解决方法:我们把历史求解(子问题)记录下来,如果下次需要求解子问题,那么直接 ...

  3. 递归 dfs 记忆化搜索 动态规划

    今天做洛谷P1434 [SHOI2002]滑雪 的时候仔细想了想记忆化搜索 现在总结一下 为了描述问题的某一状态,必须用到该状态的上一状态,而描述上一状态,又必须用到上一状态的上一状态--这种用自已来 ...

  4. 洛谷 p1434 滑雪【记忆化搜索】

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

  5. DFS——记忆化搜索——动态规划

    以洛谷P1802  5倍经验日 为例 https://www.luogu.org/problem/show?pid=1802 题目背景 现在乐斗有活动了!每打一个人可以获得5倍经验!absi2011却 ...

  6. 8636 跳格子(dfs+记忆化搜索)

    8636 跳格子 该题有题解 时间限制:2457MS  内存限制:1000K 提交次数:139 通过次数:46 题型: 编程题   语言: G++;GCC Description 地上有一个n*m 的 ...

  7. 牛客假日团队赛5 F 随机数 BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数 (dfs记忆化搜索的数位DP)...

    链接:https://ac.nowcoder.com/acm/contest/984/F 来源:牛客网 随机数 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6 ...

  8. 蓝桥杯 地宫取宝【第五届】【省赛】【C组】C++ dfs 记忆化搜索

    资源限制 时间限制:1.0s   内存限制:256.0MB X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被 ...

  9. AcWing 901. 滑雪(记忆化搜索)

    题目链接 https://www.acwing.com/problem/content/903/ 思路 我们定义f[i][j]f[i][j]f[i][j]表示以(i,j)(i,j)(i,j)作为起点的 ...

最新文章

  1. Linux(10)用户和组管理命令
  2. 如何用二进制表示一个小数
  3. azure blob_使用Azure Blob存储托管Maven工件
  4. 数学建模学习笔记(十二)——奇异值分解
  5. 以太坊核心开发者计划为2.0制定“最小化合并”方案
  6. u盘数据恢复的原理_【轻松搞定初始化黑胶体闪存盘数据恢复实战】 u盘数据恢复是什么原理...
  7. 用R语言实现深度学习情感分析
  8. HTML学习总结(4)——表格/块/内联元素/iframe/颜色/脚本/实体
  9. 设置自增递增零开始_SnowflakeId雪花ID算法,分布式自增ID应用
  10. html简单实现下拉菜单
  11. 分享一个mysql的docker-compose.yml
  12. Kavex GameDev-Resources
  13. android widget的中文文档
  14. VS2008+AnkhSVN搭建源代码管理版本库
  15. payjs 源码_GitHub - wlijie/payjs_test: PAYJS 小程序支付框架与示例
  16. 在线音乐播放项目——BY音乐
  17. 小鹏汽车领投 这家车规级MEMS激光雷达公司完成数亿元Pre-C轮融资
  18. MRI预处理-去颅骨
  19. .htaccess是什么?.htaccess几个简单应用
  20. Redis学习12之jedis的set时间测试

热门文章

  1. GDAL源码剖析(六)之GDAL开发及其调试
  2. java kdj_基于Java语言开发的个性化股票分析技术随机指数[KDJ].doc
  3. Starling移动平台开发初体验
  4. C#Socket同步异步通讯总结笔记
  5. 如何使用 Visual C# 加密和解密文件
  6. angularjs post返回html_Python 爬虫网页解析工具lxml.html(二)
  7. payload的使 常用xss_跨站脚本XSS Payloads生成器
  8. dw显示云服务器的数据库,dw如何读取服务器数据库
  9. Python之 面向对象封装案例
  10. java判断光标位置_Java如何知道光标的当前位置?