本题有人写是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. 树——axure线框图部件库介绍

    终于到最后一个组件的介绍了!到这里基础的应用应该算完成了!  1. 拖动树组件,到页面编辑区域  2.添加节点,可以添加子节点也可以在该节点的前后添加平级节点  3. 编辑节点图标 做好上面的那一步, ...

  2. android设置背景图片透明

    设置Activiyt为透明可以在Activity中引用系统透明主题android:theme="@android:style/Theme.Translucent" 设置背景图片透明 ...

  3. dos批量替换当前目录后缀名

    有时候有些后缀名不满足条件,就需要进行批量的替换,如果人为的去替换,那么如果量少的话还好说,量多的话一个个去替换就太傻了,今天从网络上面查找了一些批量替换的dos命令,用起来还挺好用的,就直接把代码贴 ...

  4. G - Self Numbers(2.2.1)

    G - Self Numbers(2.2.1) Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & % ...

  5. linux(readhat) yum源安装

    在安装測试环境的时候遇到了一个问题,/etc/yum/repos.d中不存在文件或目录,无法更新yum源. 解决方法: (一.配置网络yum源) 1.首先在/etc/yum/repos.d/文件夹下创 ...

  6. unix ourhdr.h myerr.h

    //在学UNIX环境高级编程时把下面两个头文件与源文件放在同一个文件下就可以正常编译了,我的是在ubuntu 12.04环境下,第一个程序编译和运行成功了,希望对大家有帮助(我已经根据网上的资料修改好 ...

  7. linux 解压操作命令

    http://apps.hi.baidu.com/share/detail/37384818 download ADT link http://dl.google.com/android/ADT-0. ...

  8. 14.1.2 Checking InnoDB Availability 检查InnoDB 可用性:

    14.1.2 Checking InnoDB Availability 检查InnoDB 可用性: 确认你的server 是否支持InnoDB,使用 SHOW ENGINES 语句.(默认MySQL的 ...

  9. 【Demo 0004】Android 布局

    本章学习要点:        1.  了解Android 常见的四种布局结构;        2.  掌握四种布局及混合布局的使用方法:        3.  掌握布局中定义键值的意义以及参数使用方法 ...

  10. Lucene.Net 2.3.1开发介绍 —— 四、搜索(二)

    原文:Lucene.Net 2.3.1开发介绍 -- 四.搜索(二) 4.3 表达式用户搜索,只会输入一个或几个词,也可能是一句话.输入的语句是如何变成搜索条件的上一篇已经略有提及. 4.3.1 观察 ...