本题有人写是DP,只是和DP还是有点区别的,应该主要是记忆化 Momoization 算法。

思路就是递归,然后在递归的过程把计算的结果记录起来,以便后面使用。

非常经典的搜索题目,这样的方法非常多题目考到的。

关键还是怎样把代码写清晰工整了,O(∩_∩)O~。

#include <stdio.h>
const int MAX_N = 101;
int R, C;
int arr[MAX_N][MAX_N];
int tbl[MAX_N][MAX_N]; inline int max(int a, int b) { return a > b ? a : b ; } inline bool isLegal(int r, int c, int r1, int c1)
{
return 0<=r1 && 0<=c1 && r1<R && c1<C && arr[r][c] < arr[r1][c1];
} int getMaxStair(int r, int c)
{
if (tbl[r][c]) return tbl[r][c]; int up = isLegal(r, c, r+1, c)? getMaxStair(r+1, c) : 0;
int down = isLegal(r, c, r-1, c)? getMaxStair(r-1, c) : 0;
int left = isLegal(r, c, r, c-1)? getMaxStair(r, c-1) : 0;
int right = isLegal(r, c, r, c+1)? getMaxStair(r, c+1) : 0; return tbl[r][c] = max(max(up, down), max(left, right)) + 1;
} int getMaxStairNum()
{
int ans = 0; for (int i = 0; i < R; i++)
{
for (int j = 0; j < C; j++)
{
getMaxStair(i, j);
}
} for (int i = 0; i < R; i++)
{
for (int j = 0; j < C; j++)
{
ans = max(ans, tbl[i][j]);
}
}
return ans;
} int main()
{
while (scanf("%d %d", &R, &C) != EOF)
{
for (int i = 0; i < R; i++)
{
for (int j = 0; j < C; j++)
{
scanf("%d", &arr[i][j]);
tbl[i][j] = 0;
}
}
printf("%d\n", getMaxStairNum());
}
return 0;
}

POJ 1088 滑雪 记忆化优化题解的更多相关文章

  1. POJ 1088 滑雪(记忆化搜索+dp)

    POJ 1088 滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 107319   Accepted: 40893 De ...

  2. POJ 1088 滑雪 (记忆化搜索)

    题目链接:http://poj.org/problem?id=1088 题意很好懂,就是让你求一个最长下降路线的长度. dp[i][j]记录的是i j这个位置的最优的长度,然后转移方程是dp[i][j ...

  3. POJ 1088 滑雪 记忆化DP

    滑雪 Time Limit: 1000MS   Memory Limit: 65536K       Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度 ...

  4. POJ 1088 DP=记忆化搜索

    话说DP=记忆化搜索这句话真不是虚的. 面对这道题目,题意很简单,但是DP的时候,方向分为四个,这个时候用递推就好难写了,你很难得到当前状态的前一个真实状态,这个时候记忆化搜索就派上用场啦! 通过对四 ...

  5. poj 1088 (dfs+记忆化) 滑雪

    题目;http://poj.org/problem?id=1088 感觉对深搜还不太熟练,所以练习一下,类似于连连看的那题,注意的是所求的是最大达长度,并不是从最大的或者最小的点出发得到的就是最长的路 ...

  6. 使用记忆化优化你的 R 代码

    目录 使用记忆化优化你的 R 代码 R 中的性能优化 R 何时变慢 R 何时变(更)快 R 中的记忆化 何时使用记忆化 使用记忆化优化你的 R 代码 本文翻译自<Optimize your R ...

  7. POJ 1088 滑雪(记忆化搜索)

    滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 92384   Accepted: 34948 Description ...

  8. POJ 1088 滑雪(模板题 DFS+记忆化)

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

  9. POJ 1088 滑雪 DFS 记忆化搜索

    http://poj.org/problem?id=1088 校运会放假继续来水一发^ ^ 不过又要各种复习,功课拉下了许多 QAQ. 还有呀,就是昨天被一个学姐教育了一番,太感谢了,嘻嘻^ ^ 好了 ...

随机推荐

  1. MVC控制器里面使用dynamic和ExpandoObject

    MVC控制器里面使用dynamic和ExpandoObject 在很多时候,我们在数据库里面定义表字段和实际在页面中展示的内容,往往是不太匹配的,页面数据可能是多个表数据的综合体,因此除了我们在表设计 ...

  2. 解决cocoapods在64位iOS7系统以下的警告问题

    今天碰到一个非常奇怪的问题.XCODE提示这种警告 Pods was rejected as an implicit dependency for 'libPods.a' because its ar ...

  3. VC++ WIN32 sdk实现按钮自绘详解.

    网上找了很多,可只是给出代码,没有详细解释,不便初学者理解.我就抄回冷饭.把这个再拿出来说说. 实例图片:    首先建立一个标准的Win32 Application 工程.选择a simple Wi ...

  4. 中文分词算法之最大正向匹配算法(Python版)

    最大匹配算法是自然语言处理中的中文匹配算法中最基础的算法,分为正向和逆向,原理都是一样的. 正向最大匹配算法,故名思意,从左向右扫描寻找词的最大匹配. 首先我们可以规定一个词的最大长度,每次扫描的时候 ...

  5. android 实现代码关机

    开始从网上搜索,通过发action的方式实现,不过一直没有成功. Intent intent = new Intent();   intent.setAction(Intent.ACTION_SHUT ...

  6. 一种H.264高清视频的无参考视频质量评价算法(基于QP和跳过宏块数)

    本文记录一种无参考视频质量评价算法.这是我们自己实验室前两年一个师姐做的,算法还是比较准确的,在此记录一下. 注意本算法前提是高清视频.而且是H.264编码方式. 该方法主要使用两个码流里面的参数进行 ...

  7. IOS之【地图MapKit】

    iOS地图位置开发   iPhone SDK提供了三个类来管理位置信息:CLLocation CLLocationManager 和 CLLHeading(不常用).除了使用GPS来获取当前的位置信息 ...

  8. 在VC下显示JPEG、GIF格式图像的一种简便方法

    在VC下显示JPEG.GIF格式图像的一种简便方法 一. 引言  JPEG图像压缩标准随然是一种有损图像压缩标准,但由于人眼视觉的不敏感,经压缩后的画质基本没有发生变化,很快便以较高的压缩率得到了广泛 ...

  9. 枚举算法总结 coming~^.*

    感谢CJ同学监督╭(╯^╰)╮.从放假到现在都木有更新博客了~噶呜~小娘谨记教诲,每天会更新博客==!! 看了一下POJ训练计划,虽然已经零零散散做了40多道题了,还是从头开始整理一下漏掉的知识点.T ...

  10. 2388 Who&#39;s in the Middle(简单排序)

    训练计划的第一个问题,首先从水问题开始:排序的数组,中间数则输出. http://poj.org/problem?id=2388 冒泡排序: #include <iostream> usi ...