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的矩阵 如果其中一个点高于另一个点 那么就可以从高点向下滑 直到没有可以下滑的时候 就得到一条下滑路径 ...
随机推荐
- Why you shouldn't use Entity Framework with Transactions
Links EntityFramework This is a .net ORM Mapper Framework from Microsoft to help you talking with yo ...
- ajava包的命名
2. Package的命名 Package名的第一部分应是小写ASCII字符,并且是顶级域名之一,通常是com.edu.gov.mil.net.org或由ISO标准3166.1981定义的国家唯一标志 ...
- cad中关于点样式点的绘制
点样式 从0开始, 默认的就是0 0= 一个小点; 1= 空的, 什么都不显示; 2= +加号; 3= X 叉号 设置点样式的命令是: pdmode: 可以假设认为是: point default m ...
- winScp如何通过隧道代理进行远程连接
目标机器:a ip为192.168.2.150(内网ip) a.xxx.x.xx(外网ip) 跳板机器:b ip为192.168.2.151(内网ip) b.xxx.xx.xx(外网ip) 目标机 ...
- 我常用的eclipse快捷键
重写父类方法:右键点击, 进source,进override/implement 单行注释(或多行注释) Ctrl+/ 文档注释:shift+alt+J 整块注释: Ctrl+shift+/ 取消整块 ...
- [原] Intellij IDEA开发Android,祝还在使用eclipse的早日脱离苦海
注: 现在推荐使用Android Studio,以后google在Android Studio上个性差异化的东西越来越多, 所以越早使用Android Studio越好,看看更新文档,使我们开发更方便 ...
- JUnit之持续集成(CI,Continuous Integration)
序,测试驱动开发告诉我们,要尽早测试,经常测试.如果我们进行一点小改动时,都把所有的单元测试.集成测试和功能测试执行一遍,这就会非常浪费时间.为了避免这一点,在开发期间我们只执行单元测试,那么集成测试 ...
- 如何在发布博客时插入复杂公式——Open Live Writer
1.http://latex.codecogs.com/eqneditor/editor.php 2.使用Word发布
- UI第五节——手势
#import "AppDelegate.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL ...
- 【C语言入门教程】2.6 运算符
运算符是程序中用于数值运算的操作符,C 语言的运算符可分为 算术运算符.关系与逻辑运算符 和 位操作运算符 这 3 类. 2.6.1 算术运算符 算术运算符用来完成基本的数值运算,如 加.减.乘.除, ...