滑雪
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 88560   Accepted: 33212

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

Source

SHTSC 2002

以前真是太水了。。竟然是看了解题报告觉得好神奇 前几个月的咸鱼,现在叫菜鸟吧2333

重写一遍,一个记忆化搜索的基础题。

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std;
const int N = 105;
int mp[N][N];
int dp[N][N]; ///dp[i][j]保存的是当前点能划最远的距离
int n,m;
int dir[][2] ={{1,0},{-1,0},{0,1},{0,-1}};
int dfs(int x,int y){int ans = 0;if(dp[x][y]>1) return dp[x][y];  ///记忆化搜索:已经搜过剪枝for(int i=0;i<4;i++){int nextx = x+dir[i][0];int nexty = y+dir[i][1];if(nextx<1||nextx>n||nexty<1||nexty>m) continue;if(mp[nextx][nexty]<mp[x][y]){ans = max(ans,dfs(nextx,nexty));}}dp[x][y]=ans+1; ///子问题的解加上1就是当前点的解return dp[x][y];
}
int main()
{while(scanf("%d%d",&n,&m)!=EOF){for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){scanf("%d",&mp[i][j]);dp[i][j] = 1;   ///初始化每个点的高度为自身
        }int ans = -1;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){dfs(i,j);if(dp[i][j]>ans) ans = dp[i][j];}}printf("%d\n",ans);}}

转载于:https://www.cnblogs.com/liyinggang/p/5384343.html

poj 1088(记忆化搜索)相关推荐

  1. POJ 1579 记忆化搜索

    [问题描述] 自定义函数w(a,b,c). 如果 a ≤ 0 或b ≤ 0 或 c ≤ 0, 则返回结果: 1;  如果 a > 20 或 b > 20 或 c > 20, 则返回结 ...

  2. POJ 1189 记忆化搜索

    钉子和小球 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7218   Accepted: 2164 Description ...

  3. 【记忆化搜索】【线性化DP】滑雪 (ssl 1202/luogu 1434/pku 1088)

    滑雪滑雪滑雪 ssl 1202 luogu 1434 pku 1088 题目大意: 有一个N*M的矩阵,每个位置都有一个数,可以从大的数走向小的数,问可走的路最长是多少 原题 Michael喜欢滑雪百 ...

  4. poj 1085 Triangle War 博弈论+记忆化搜索

    思路:总共有18条边,9个三角形. 极大极小化搜索+剪枝比较慢,所以用记忆化搜索!! 用state存放当前的加边后的状态,并判断是否构成三角形,找出最优解. 代码如下: 1 #include<i ...

  5. 2020.9.9华为笔试记忆:KMP+记忆化搜索+字典树

    2020.9.9华为笔试 当然,出现在我博客中的笔试都不是我自己的笔试(人家也不给我发笔试链接,小声bibi,诶,好像我也没投,hhhahahha 记者:为什么要做笔试? 我:生活无聊了喏,肯定要做啊 ...

  6. pku 1191 棋盘分割 DP / 记忆化搜索

    http://poj.org/problem?id=1191 题意:中文省略. 思路:黑说p116有讲解, 主要的状态转移方程为 横着切: dp[k][x1][y1][x2][y2]  = min(d ...

  7. 博弈论(2)DP/记忆化搜索

    博弈问题的话,假设两个人都极度聪明,都会采取最优策略,那么就是也知道了对方也和自己一样聪明,我采取最优策略后,对方也会根据当前状态做出最优策略,简而言之,就是每个玩家都从第一步棋看到了最后一步棋. 先 ...

  8. 记忆化搜索例题 记忆化搜索

    1.poj  1579 题目链接: http://poj.org/problem?id=1579 代码如下: #include <cstdio> #include <cstring& ...

  9. 搜索问题之状态空间搜索(状态压缩+记忆化搜索+ BFS)

    文章目录 1. 前言 2. 问题举例(九宫格问题) 3. 问题分析 3.1 状态编码与解码 3.2 哈希映射 3.3 集合判重 4. 问题实现 推荐阅读 1. 前言 之前介绍的回溯法常用于 解空间的搜 ...

最新文章

  1. 入门单片机选择51还是stm32?入门单片机有哪些好的教学视频?
  2. 百度编辑器(ueditor)上传图片
  3. docker 可视化管理工具 rancher 简介
  4. python 日历_python中的日历和时间
  5. toch_geometric 笔记:message passing GCNConv
  6. JavaScript事件捕获与事件冒泡原理 IE和DOM之间存在哪些主要差别
  7. Yarn 监控 - 监控任务运行状态 (包括Spark,MR 所有在Yarn中运行的任务)
  8. python找图是什么模块-python中模块查找的原理与方法详解
  9. mysql滴的一声就关了_关于mysql数据库在输入密码后,滴的一声直接退出界面的解决办法(详细办法)...
  10. hadoop的mapreduce知识点
  11. HTML和CSS面试题第35题
  12. define语句换行\后不能有空格
  13. Latex 版本简历
  14. 数据库索引与视图实验
  15. Windows:Win10 Dell笔记本禁用触摸板
  16. 浅析3D音效的技术和发展
  17. 怎么用计算机计算性别的公式,测男女的计算公式测了下挺准的
  18. c语言void要用什么头文件,什么是C语言头文件?
  19. 如何从CentOS官网下载我们想要的版本
  20. FastAPI: 极速开发Python Web应用的未来之星

热门文章

  1. virtual box
  2. python I/O原理
  3. c语言程序设计行列式,新手作品:行列式计算C语言版
  4. matlab elif,MATLAB与fftfilt相当于Python
  5. 在vSphere 6.x vSAN数据存储上使用Oracle RAC(2121181)
  6. 压测学习总结(6)——Jmeter同步定时器的使用
  7. Java基础学习总结(155)——Java 日志框架怎么选?Logback Or Log4j2?
  8. Mysql学习总结(62)——MySQL连接com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link问题
  9. Docker学习总结(36)——利用Google开源Java容器化工具Jib构建镜像
  10. linux系统下安装ns,Ubuntu 14.04下安装ns2.35