题目描述

描述

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更长。事实上,这是最长的一条。

输入

输入的第一行表示区域的行数R和列数C(1 <= R,C <= 100)。下面是R行,每行有C个整数,代表高度h,0<=h<=10000。

输出

输出最长区域的长度。

样例输入

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

样例输出

25

来源

Don’t know

思路

直接仿照摘花生这道题是不行的,因为有四个方向而另外一题只有两个方向因此要使用新的方法,即是将坐标与数字储存在结构体中排序然后判断这个连续数列的最长上升子序列即可。用的方法是将二维转化一维,将会简单许多。

注:本题坑点很多,特别是数组初始化的大小。

代码实现

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
struct skit
{
    int x,y,num;
}re[10005];
bool cmp(skit a,skit b)
{
    if(a.num<b.num)return true;
    return false;
}
int n,m,a[105][105],maxx,p,b[105][105];
int main()
{
    memset(a,-999,sizeof(a));
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        {
            scanf("%d",&a[i][j]);
            re[++p].x=i;
            re[p].y=j;
            re[p].num=a[i][j];
        }
    sort(re+1,re+p+1,cmp);
    for(int i=1;i<=p;i++)
    {
        int nx=re[i].x,ny=re[i].y;
        if(a[nx][ny]>a[nx-1][ny])b[nx][ny]=max(b[nx][ny],b[nx-1][ny]+1);
        if(a[nx][ny]>a[nx+1][ny])b[nx][ny]=max(b[nx][ny],b[nx+1][ny]+1);
        if(a[nx][ny]>a[nx][ny-1])b[nx][ny]=max(b[nx][ny],b[nx][ny-1]+1);
        if(a[nx][ny]>a[nx][ny+1])b[nx][ny]=max(b[nx][ny],b[nx][ny+1]+1);
        maxx=max(maxx,b[nx][ny]);
    }
    printf("%d\n",maxx+1);
}

[openjudge-动态规划]滑雪的更多相关文章

  1. OpenJudge 1088 滑雪

    总时间限制: 1000ms 内存限制: 65536kB 描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者 ...

  2. OpenJudge/Poj 1088 滑雪

    1.链接地址: bailian.openjudge.cn/practice/1088 http://poj.org/problem?id=1088 2.题目: 总Time Limit: 1000ms ...

  3. POJ1088滑雪(记忆化搜索+DFS||经典的动态规划)

      Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 84297   Accepted: 31558 Description M ...

  4. POJ 1088 滑雪 -- 动态规划

    题目地址:http://poj.org/problem?id=1088 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当 ...

  5. POJ 1088 滑雪 ( DFS+动态规划思想 )

    滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 79519   Accepted: 29581 Description ...

  6. POJ-1088滑雪,典型的动态规划题,与NYOJ-10skiing一样,但NYOJ上时限是3s,用搜索可以过,但在POJ上就超时了~~

    滑雪 Time Limit: 1000MS                    Memory Limit: 65536k                                        ...

  7. 滑雪---poj1088(动态规划+记忆化搜索)

    题目链接:http://poj.org/problem?id=1088 有两种方法 一是按数值大小进行排序,然后按从小到大进行dp即可: #include <iostream> #incl ...

  8. 【动态规划】skiing_深度搜索_动态规划

    问题 B: [动态规划]skiing 时间限制: 1 Sec  内存限制: 128 MB提交: 28  解决: 11[提交][状态][讨论版] 题目描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪 ...

  9. 滑雪 分类: POJ 2015-07-23 19:48 9人阅读 评论(0) 收藏

    滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 83276 Accepted: 31159 Description Mich ...

  10. POJ 1088 滑雪 记忆化DP

    滑雪 Time Limit: 1000MS   Memory Limit: 65536K       Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度 ...

随机推荐

  1. Mysql Window 解压版 忘记密码

    1. 首先检查mysql服务是否启动,若已启动则先将其停止服务,可在开始菜单的运行,使用命令: net stop mysql 打开第一个cmd1窗口,切换到mysql的bin目录,运行命令: mysq ...

  2. mac xmind 激活

    下载地址 https://www.jb51.net/softjc/624167.html 打开压缩包中的[K].zip  按里面的READ ME!.rtf 文件来操作 嗯,就这样

  3. 编译wxWidgets

    打开x64 Native Tools Command Prompt for VS 2017 cd wxWidgets-2.9.5\build\msw nmake -f makefile.vc TARG ...

  4. ES6 export

    一.默认导出(default export)// 1.一个模块只能有一个默认导出, 对于默认导出, 导入的名称可以和导出的名称不一致, 这对于导出匿名函数或类非常有用. <!---- page. ...

  5. git纯净提交代码(只提交自己改过的文件)

    添加远程仓库,这个远程仓库是要进行发起合并请求的仓库,简单来说就是项目的主要代码库,不是自己派生的代码库 git remote add main http://xxx  从远端仓库下载新分支与数据gi ...

  6. adb 常用命名

    adb是Android Debug Bridge的简称, 就是起到调试桥的作用,用来操作android设备 adb help (显示帮助信息) adb devices (获取设备列表及设备状态) ad ...

  7. ubuntu下安装php扩展

    参考原文地址:http://www.php.cn/php-weizijiaocheng-341528.html 发现在mac上好像不太行,然后按照下面的可以,写下来与大家分享 利用ubuntu的软件包 ...

  8. 27.用webpack自搭react和vue框架

    自己搭建react-app vue-cli 前置条件 cnpm i -D webpack webpack-cli webpack-dev-server cnpm i -D css-loader sty ...

  9. 16-1 ECMA5与ECMA6的函数定义

    ECMA5: function Drag(id){ this.ele = document.getElementById(id); var that = this; this.ele.onmoused ...

  10. python 获取本机ip

    有的设备上,有host相关配置,或者网络环境特殊,导致从hostname获取ip不符合预期. 如下函数整合了多种获取ip的方式,大部分情况都可涵盖,一般情况下可以满足需求~ 核心是创建一个UDP协议下 ...