1958 刺激

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 黄金 Gold
 
 
 
题目描述 Description

saffah的一个朋友S酷爱滑雪,并且追求刺激(exitement,由于刺激过度导致拼写都缺了个字母),喜欢忽高忽低的感觉。现在S拿到了一张地图,试图制定一个最长路径。然而有的地图过于庞大,不易直接看出,所以S请来了saffah,saffah又请来了你向其帮忙。

地图可抽象为一个M×N的矩阵,规定上北下南,左西右东。矩阵中的元素代表这个点的高度。由于S有特殊情况,出于对S的安全考虑,S只能向东滑,向南滑,或者就地停下。我们假定摩擦力可以忽略,那么S的机械能守恒,即S不可能到达比出发点高的地方。

S可以从任意一点出发,到任意一点停止,除了遵守上述规则外,S还要求自己的路线必须是“一上一下一上一下”(这样才刺激对吧),即如果这一时刻比上一时刻的高度高,那么下一时刻只能滑到比这一时刻低的地方,或者停止;反之亦然。保证不会有相邻的两个高度相同的地方。

现在S想知道,按照这个要求,最多能够经过几个点。(包括起点和终点)

输入描述 Input Description

输入文件的第一行有两个正整数M,N。

接下来有M行,每行有N个整数,表示这一点的高度值Hi,j。

输出描述 Output Description

输出文件只有一行,为一个整数,为最大能够滑行经过的点数。

样例输入 Sample Input

4 5

3 8 9 2 -1

2 5 8 0 8

8 0 1 2 3

-2 1 9 -1 0

样例输出 Sample Output

7

数据范围及提示 Data Size & Hint

说明: 满足题意的最长路径为8→5→8→0(或1),共经过了7个点。可以证明,没有更长的路径存在。

对于100%的数据,-2×109≤Hi,j≤2×109。

对于30%的数据,M=N≤5;对于50%的数据,M+N≤25;对于70%的数据,M+N≤50;对于100%的数据,M+N≤100。

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define N 110
using namespace std;
int n,m,h[N][N],ans;
int read()
{
    ,f=; char ch=getchar();
    ; ch=getchar();}
    +ch-'; ch=getchar();}
    return x*f;
}
void dfs(int x,int y,int s,int w,int height)
//x,y当前点所在的位置,s走到当前点所经过的点数,w到达当前点需要往高处(1)走还是往低处(-1)走,height为出发点的高度
{
    ans=max(s,ans);
    if(s+n-x+m-y<=ans) return ;//剪枝
    <=m&&w==&&h[x][y+]<=height&&h[x][y+]>h[x][y])       dfs(x,y+,s+,-,height); //东高处
    <=m&&w==-&&h[x][y+]<=height&&h[x][y+]<h[x][y]) dfs(x,y+,s+,,height);//东低处
    <=n&&y<=m&&w==&&h[x+][y]<=height&&h[x+][y]>h[x][y])       dfs(x+,y,s+,-,height);//南高处
    <=n&&y<=m&&w==-&&h[x+][y]<=height&&h[x+][y]<h[x][y]) dfs(x+,y,s+,,height);//南低处
}
int main()
{
    n=read(),m=read();
    ;i<=n;i++)
     ;j<=m;j++)
      h[i][j]=read();
    ;i<=n;i++)
     ;j<=m;j++)
      dfs(i,j,,-,h[i][j]);
    printf("%d",ans);
    ;
}

最新文章

  1. MongoDB学习笔记五—查询上
  2. Oil Deposits
  3. js浏览器对象的属性和方法
  4. 04-23 Android 课堂笔记
  5. 【EF 2】浅谈ADO数据模型生成串(二):数据库连接串分析
  6. html+css学习笔记 3[浮动]
  7. Reverse Words in a String (JAVA)
  8. MySQL的零碎知识点
  9. linux sed命令详解(转)
  10. [js高手之路] es6系列教程 - Set详解与抽奖程序应用实战
  11. Loadrunner下载脚本
  12. 熟悉pyspider的装饰器
  13. android 开发 View _11_ xml动画
  14. 搭建中小规模集群之rsync数据同步备份
  15. oracle数据库丢失数据文件、控制文件、重做日志文件、初始化文件恢复方法
  16. input文本框在div中居中
  17. 【C】——线程引入 pthread_self 和 pthread_equal 原因 ——解决不同平台的问题!
  18. ★Wireshark基本介绍和学习TCP三次握手
  19. cf812 C 二分
  20. maven开发项目中遇到的问题 StartChild.call at java.util.concurrent.FutureTask.run

热门文章

  1. java程序-类的高级特性
  2. SNP|RELP|genetic polymorphism|
  3. bzoj5183 [Baltic2016]Park
  4. MySQL 查询优化之 Index Condition Pushdown
  5. 使用python制作查询火车票工具
  6. Linux菜鸟起飞之路【二】Linux基本常识
  7. python 基础知识汇总—— if else while continue
  8. 【06】前端需要注意哪些SEO
  9. 【php学习之路】微信公众帐号
  10. lamp环境配置,ubunutu下