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

//#include <bits/stdc++.h>
#include <iostream>
#include <cstring>
#include <cstdio>
#define X 10005
#define inf 0x3f3f3f3f
#define PI 3.141592653589793238462643383
//#define IO  ios::sync_with_stdio(false),cin.tie(0), cout.tie(0);
//#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
const int maxn=1e6+10;
int dp[1005][1005];
int mp[110][110];
int n,m;
int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
void init()
{memset(dp,-1,sizeof(dp));memset(mp,0,sizeof(mp));
}
int dfs(int x,int y)
{if(dp[x][y]!=-1)return dp[x][y];dp[x][y]=1;for(int i=0;i<4;++i){int xx=x+dir[i][0],yy=y+dir[i][1];if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&mp[x][y]>mp[xx][yy]){dp[x][y]=max(dp[x][y],dfs(xx,yy)+1);}}return dp[x][y];
}
int main()
{while(scanf("%d%d",&n,&m)!=EOF){init();for(int i=1;i<=n;++i)for(int j=1;j<=m;++j)scanf("%d",&mp[i][j]);int ans=-1;for(int i=1;i<=n;++i)for(int j=1;j<=m;++j){ans=max(ans,dfs(i,j));}cout<<ans<<endl;}return 0;
}

【poj1088 记忆话搜索】相关推荐

  1. J - 数塔 HDU - 2084(深搜,记忆化搜索+)

    在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少? 已经告诉你了,这是个DP的题目 ...

  2. 数字三角形——递归、递推、记忆化搜索

    数字三角形 描述:          有一个由非负整数组成的三角形,第一行只有一个数,除了最下行之外每个数的左下方和右下方各有一个数. 问题:              从第一行的数开始,每次可以往左 ...

  3. poj3249Test for Job(记忆化搜索)

    1 /* 2 题意:给一个DAG图,n个节点,每个节点都对应一个值,入度为零的点走到出度为零的点,计算所有可能路径 3 经过节点值的和最大! 4 5 思路:记忆话搜索:也就是如果我们搜索到某一个节点的 ...

  4. LightOJ 1013 LCS+记忆化搜索

    http://www.lightoj.com/volume_showproblem.php?problem=1013 题目大意: 给两个字符串,问最短的满足子串包含给的两个字符串的字符串的最短长度,以 ...

  5. hdu 1078 FatMouse and Cheese(记忆化搜索)

    题意:一个n*n的矩阵,每个点有若干块点心,小老鼠开始在左上角,每次最多往前走k步,且停留的点的点心数比上一次停留的点大,输出最大的i点心数 分析:停留的点数目必须比上次大,形成一个序,必定是一个DA ...

  6. POJ1088 Bailian1088 滑雪【DFS+记忆化搜索】

    滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 114685 Accepted: 43807 Description Mic ...

  7. POJ1088 滑雪 记忆化搜索

    滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 107548   Accepted: 40980 Description ...

  8. POJ1088 滑雪 dp入门 记忆化搜索

    题意:给你一个r*c的矩阵,只能从图上数字大的地方滑向数字小的地方,问你一次性最多滑过多少个数字. 思路:记忆化搜索.顺序搜索,记录地图上每一个点出发所能达到的最远长度,若某一点标记过说明当前点的最远 ...

  9. poj1088 滑雪 记忆化搜索

    我是渣渣 我是渣渣 ....记忆化搜索 看了学长的代码 和算法竞赛入门经典这本书才勉勉强强看懂点... #include <stdio.h> #include <string.h&g ...

最新文章

  1. s-systemtap工具使用图谱(持续更新)
  2. java面向对象 接口和实现类_类实现java面向对象上:接口
  3. Linux实战案例(4)CentOS清除用户登录记录和命令历史方法
  4. Python 支付宝支付代码
  5. ACM比赛技巧之文件数据输入与输出
  6. Java 并发编程之可重入锁 ReentrantLock
  7. 重启中的武汉:烟火气息回来了,消费疯狂增长
  8. java中readline函数_自定义BufferedReader中read和readLine方法
  9. 怎么在Linux系统下使用NTFS的U盘或者是分区以及移动硬盘-使用工具NTFS-3G
  10. 卡方分布分位数_数理统计第五讲(三大分布)
  11. java面试题框架知识点总结
  12. 色彩知识的运用 和 色彩意境解析
  13. 记一次git pull 错误
  14. 多旋翼油门量与升力关系
  15. dede判断字段是否为空
  16. 7. Components
  17. Pixhawk系统架构介绍
  18. java bulk_Elasticsearch Java High Level REST Client(Bulk API)
  19. vanilla_使用Vanilla JavaScript即时搜索
  20. Mysql之高可用方案浅析

热门文章

  1. windows自动更新安装后遗留文件或文件夹的删除
  2. 高通android新建项目
  3. Android4.2.2源码目录结构分析
  4. 在django restful framework中设置django model的property
  5. 牛客练习赛9 B - 珂朵莉的值域连续段
  6. AGG第七课 内存分配策略
  7. python之递归锁【Rlock】
  8. SQL Server Mysql 对null值理解的不同
  9. ASP调用存储过程详解。
  10. ms speech sdk51 TTS使用