POJ 1088
http://poj.org/problem?id=1088
一道中文题,这道题如果不限时的话,是个简单的搜索,但限时的话,就要用记忆化搜索
所谓记忆化搜索就是对每一次搜索的结果进行记录,然后之后的如果需要使用到这次搜索的结果的话,就可以直接使用,不需要再去搜索,可以减少很多时间
#include <stdio.h>
#include <iostream>
#include <string.h> using namespace std;
int cub[][];
bool jud[][];
int dis[][]; int m,n,max1,x,y,ans; int dfs(int i,int j){
if(cub[i-][j]<cub[i][j]){
if(!jud[i-][j]) { //这个就是我的记忆化搜索,把以前搜索到的结果,直接使用就可以。
ans+=dis[i-][j];
if(ans>dis[x][y]) dis[x][y]=ans;
ans-=dis[i-][j];
}
else {
ans++;
dfs(i-,j);
if(ans>dis[x][y]) dis[x][y]=ans;
ans--;
}
}
if(cub[i+][j]<cub[i][j]){
if(!jud[i+][j]) {
ans+=dis[i+][j];
if(ans>dis[x][y]) dis[x][y]=ans;
ans-=dis[i+][j];
}
else {
ans++;
dfs(i+,j);
if(ans>dis[x][y]) dis[x][y]=ans;
ans--;
}
}
if(cub[i][j-]<cub[i][j]){
if(!jud[i][j-]) {
ans+=dis[i][j-];
if(ans>dis[x][y]) dis[x][y]=ans;
ans-=dis[i][j-];
}
else {
ans++;
dfs(i,j-);
if(ans>dis[x][y]) dis[x][y]=ans;
ans--; }
}
if(cub[i][j+]<cub[i][j]){
if(!jud[i][j+]) {
ans+=dis[i][j+];
if(ans>dis[x][y]) dis[x][y]=ans;
ans-=dis[i][j+];
}
else {
ans++;
dfs(i,j+);
if(ans>dis[x][y]) dis[x][y]=ans;
ans--; }
}
jud[x][y]=false; //每一个搜索后,对那个那个搜索后的点进行标记
return ;
}
int main(){
scanf("%d%d",&m,&n);
memset(dis,,sizeof(dis));
memset(jud,false,sizeof(jud));
memset(cub,,sizeof(cub)); //初始化1的目的就是边界。把那些边界的值都赋值为很大。memset赋值1的话,cub里面的数不是1.
max1=;
for(int i=;i<=m;i++)
for(int j=;j<=n;j++){
scanf("%d",&cub[i][j]);
dis[i][j]=;
jud[i][j]=true;
}
for(x=;x<=m;x++)
for(y=;y<=n;y++){
ans=;
dfs(x,y);
if(max1<dis[x][y]) max1=dis[x][y];
}
printf("%d\n",max1);
return ;
}
POJ 1088的更多相关文章
- POJ 1088 滑雪(记忆化搜索)
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 92384 Accepted: 34948 Description ...
- POJ 1088 滑雪(记忆化搜索+dp)
POJ 1088 滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 107319 Accepted: 40893 De ...
- POJ 1088 滑雪 (记忆化搜索)
题目链接:http://poj.org/problem?id=1088 题意很好懂,就是让你求一个最长下降路线的长度. dp[i][j]记录的是i j这个位置的最优的长度,然后转移方程是dp[i][j ...
- POJ 1088 滑雪 -- 动态规划
题目地址:http://poj.org/problem?id=1088 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当 ...
- OpenJudge/Poj 1088 滑雪
1.链接地址: bailian.openjudge.cn/practice/1088 http://poj.org/problem?id=1088 2.题目: 总Time Limit: 1000ms ...
- poj 1088 滑雪(区间dp+记忆化搜索)
题目链接:http://poj.org/problem?id=1088 思路分析: 1>状态定义:状态dp[i][j]表示在位置map[i][j]可以滑雪的最长区域长度: 2>状态转移方程 ...
- poj 1088 (dfs+记忆化) 滑雪
题目;http://poj.org/problem?id=1088 感觉对深搜还不太熟练,所以练习一下,类似于连连看的那题,注意的是所求的是最大达长度,并不是从最大的或者最小的点出发得到的就是最长的路 ...
- POJ 1088 滑雪 【记忆化搜索经典】
题目链接:http://poj.org/problem?id=1088 滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: ...
- poj 1088 滑雪 DP(dfs的记忆化搜索)
题目地址:http://poj.org/problem?id=1088 题目大意:给你一个m*n的矩阵 如果其中一个点高于另一个点 那么就可以从高点向下滑 直到没有可以下滑的时候 就得到一条下滑路径 ...
随机推荐
- jQuery里$(this)和this的区别在哪?
$(this)是jquery对象,能调用jquery的方法,例如click(), keyup().而this,则是html元素对象,能调用元素属性,例如this.id,this.value.例如假设已 ...
- 巧用array_map()和array_reduce()替代foreach循环
1.array_reduce( $arr , callable $callback ) 使用回调函数迭代地将数组简化为单一的值. 其中$arr 为输入数组,$callback($result , $v ...
- 程序日志输出实现-Log4j
学习开发的过程中,我们都应该用过System.out.println():来做一些调试工作,有时候确实很有用有没有.但是这种简单粗暴的方式让程序中到处存在着sysout.这种方式难免会有性能的影响,维 ...
- 代码重构 & 常用设计模式
代码重构 重构目的 相同的代码最好只出现一次 主次方法 主方法 只包含实现完整逻辑的子方法 思维清楚,便于阅读 次方法 实现具体逻辑功能 测试通过后,后续几乎不用维护 重构的步骤 1 新建一个方法 ...
- dwz 多选删除
<li><a title="确实要删除这些用户吗?" target="selectedTodo" postType="string& ...
- django学习<一>:安装
这两天打算摸索下和python相关的东西,然后正好小伙伴有个关于网站的任务,就怀着好奇的心态了解了下,然后就很自然地开始涉及django的问题. 首先就是django安装的问题,想不到第一步就出问题了 ...
- C#中的那些全局异常捕获
1.WPF全局捕获异常 public partial class App : Application { public App() { // 在异 ...
- Java-Linux系统中搭建开发环境
准备工作: 0.虚拟机中的系统→{RHEL-I386} 1.JDK→{首先要知道下载哪个版本" [zf@string ~]$ getconf LONG_BIT ":".t ...
- PHP基础OOP(二) 多态
PHP 基础 多态 ====================多态是一种思想:从一个基类中派生,响应一个虚命令,产生不同的结果. 不同的对象执行相同的方法而产生不同的行 ...
- Mac OS 中的 Python(和 NumPy)开发环境设置
http://www.python()tab.com/html/2013/pythonjichu_1010/582.html ()需要删除