• Java实现 蓝桥杯 算法提高 最长滑雪道


    试题 算法提高 最长滑雪道

    资源限制
    时间限制:1.0s 内存限制:256.0MB
    问题描述
      小袁非常喜欢滑雪, 因为滑雪很刺激。为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。 小袁想知道在某个区域中最长的一个滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。如下:
    在这里插入图片描述

    一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-…-3-2-1更长。事实上,这是最长的一条。
      你的任务就是找到最长的一条滑坡,并且将滑坡的长度输出。 滑坡的长度定义为经过点的个数,例如滑坡24-17-16-1的长度是4。
    输入格式
      输入的第一行表示区域的行数R和列数C(1<=R, C<=10)。下面是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

    package com.company;
    
    import java.util.Scanner;
    
    public class 最长滑雪道 {
        //四个方向
        static int p[][] = { {1, 0}, {0, 1},{-1, 0}, {0, -1}};
        static int max = Integer.MIN_VALUE, r, c;
    
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            r = sc.nextInt();
            c = sc.nextInt();
            int[][] a = new int[r][c];
            for (int i = 0; i < r; i++) {
                for (int j = 0; j < c; j++) {
                    a[i][j] = sc.nextInt();
                }
            }
            for (int i = 0; i < r; i++)
            {
                for (int j = 0; j < c; j++)
                {
                    dfs(a, i, j, 1);
                }
            }
            System.out.println(max);
        }
    
        public static void dfs(int[][] a, int i, int j, int sum) {
            int t, x, y;
            if (sum > max)//找出可以走的路径中的最大值
                max = sum;
            for (t = 0; t < 4; t++)//向上下左右分别搜索
            {
                x = i + p[t][0];//在节点处向上和下移动
                y = j + p[t][1];//在节点处向左和右移动
                if (x >= 0 && x < r && y >= 0 && y < c && a[x][y] < a[i][j])//如果没有超出数组边界且这个节点比原来的小
                {
                    sum++;//我们的路的长度加一
                    dfs(a, x, y, sum);//在新节点重复此次循环,到达路径最小处结束循环
                    sum--;//回溯到可以走的节点时把走过的路的长度减去
                }
            }
    
        }
    }
    
    
  • 相关阅读:
    bootstrap3在IE8下导航不显示,自动识别成手机模式
    根据href给当前导航添加样式
    transform 图标旋转,IE8、IE7不兼容
    Responsive响应式设计
    JSON和JSONP的区别,以及使用方法
    移动前端框架,require.js压缩
    编写灵活、稳定、高质量的 css代码的规范
    javaScript 时间转换,将后台返回的时间为一串数字转成正常格式
    静态布局、自适应布局、流式布局、响应式布局、弹性布局等的概念和区别
    流式布局响应式布局
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075795.html
Copyright © 2020-2023  润新知