zoukankan      html  css  js  c++  java
  • 滑雪

    【题目描述】

    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

    当且仅当高度减小时,Michael可以从某个点滑向上下左右相邻的四个点之一。在上面的例子中,一条可滑行的滑坡为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

    源代码:
    
    #include<cstdio>
    int m,n,ans(0),i[101][101],f[101][101]={0};
    int DFS(int x,int y) //记忆化搜索。
    {
        if (f[x][y]) //若已被搜索过,则返回其值。
          return f[x][y];
        int num=1; //其本身。
        if (x<n&&i[x][y]>i[x+1][y]) //注意限制边界。
        {
            int t=DFS(x+1,y)+1; //比较大小,注意其本身。
            if (t>num)
              num=t;
        }
        if (x>1&&i[x][y]>i[x-1][y])
        {
            int t=DFS(x-1,y)+1;
            if (t>num)
              num=t;
        }
        if (y<m&&i[x][y]>i[x][y+1])
        {
            int t=DFS(x,y+1)+1;
            if (t>num)
              num=t;
        }
        if (y>1&&i[x][y]>i[x][y-1])
        {
            int t=DFS(x,y-1)+1;
            if (t>num)
              num=t;
        }
        return f[x][y]=num; //回溯并顺便进行赋值。
    }
    int main()
    {
        scanf("%d%d",&n,&m);
        for (int a=1;a<=n;a++)
          for (int b=1;b<=m;b++)
            scanf("%d",&i[a][b]);
        for (int a=1;a<=n;a++)
          for (int b=1;b<=n;b++)
          {
            f[a][b]=DFS(a,b);
            if (f[a][b]>ans)
              ans=f[a][b];
          }
        printf("%d",ans);
        return 0;
    }
  • 相关阅读:
    推荐一款在IntelliJ IDEA中使用微信/QQ的插件
    springboot整合easyexcel实现Excel导入导出
    Spring Boot 跨域访问
    springboot整合mybatis-plus逆向工程
    给你自己的博客加个 Markdown
    Spring Boot实战:拦截器与过滤器
    CentOS软件的安装,更新与卸载命令
    Springboot整合pagehelper分页
    ajax请求成功回调函数没有执行问题
    ubuntu git生成ssh key (公钥私钥)配置github或者码云
  • 原文地址:https://www.cnblogs.com/Ackermann/p/5495581.html
Copyright © 2011-2022 走看看