P1434 滑雪(java)

题目描述:

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−124−17−16−1(从 2424 开始,在 11 结束)。当然 2525-2424-2323-……-33-22-11 更长。事实上,这是最长的一条。

代码:

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int m = sc.nextInt();int n = sc.nextInt();int[][] ground = new int[m][n];for(int i = 0;i < m;i ++){for(int j = 0;j < n;j ++){ground[i][j] = sc.nextInt();}}int[][] dp = new int[m][n];//初始化dp数组for(int i = 0;i < m;i ++){Arrays.fill(dp[i],1);}int maxLen = 0;for(int i = 0;i < m;i ++){for(int j = 0;j < n;j ++){maxLen = Math.max(maxLen,deepScan(ground,i,j,dp));}}System.out.println(maxLen);}//计算当前位置的最大长度public static int deepScan(int[][] ground, int i, int j, int[][] dp) {if (dp[i][j] != 1) {return dp[i][j];}int up = i - 1;int down = i + 1;int left = j - 1;int right = j + 1;int maxLen = 0;//遍历上部分if (isNotBorder(ground, up, j)) {if (ground[up][j] > ground[i][j]) {maxLen = deepScan(ground, up, j, dp);}}//遍历下部分if (isNotBorder(ground, down, j)) {if (ground[down][j] > ground[i][j]) {maxLen = Math.max(maxLen, deepScan(ground, down, j, dp));}}//遍历左部分if (isNotBorder(ground, i, left)) {if (ground[i][left] > ground[i][j]) {maxLen = Math.max(maxLen, deepScan(ground, i, left, dp));}}//遍历右部分if (isNotBorder(ground, i, right)) {if (ground[i][right] > ground[i][j]) {maxLen = Math.max(maxLen, deepScan(ground, i, right, dp));}}dp[i][j] += maxLen;return dp[i][j];}//检查是否不是边界public static boolean isNotBorder(int[][] ground, int i, int j) {return i >= 0 && j >= 0 && i != ground.length && j != ground[0].length;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/10022.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用106短信群发平台能否提升沟通效率?

利用106短信群发平台确实能够显著提升沟通效率&#xff0c;具体体现在以下几个方面&#xff1a; 1.快速传递信息&#xff1a;106短信群发平台能够实现信息的快速传递。一旦设置好发送内容和接收群体&#xff0c;短信便能在瞬间发送至大量用户。这种即时性确保了信息的迅速传达…

医院预约挂号系统微信小程序APP

医院预约挂号小程序&#xff0c;前端后台&#xff08;后台 java spring boot mysql&#xff09; 医院预约挂号系统具体功能介绍&#xff1a;展示医院信息、可以注册和登录&#xff0c; 预约挂号&#xff08;包含各个科室的预约&#xff0c;可以预约每个各个医生&#xff09;&…

java-spring 09 下.populateBean (方法成员变量的注入@Autowird,@Resource)

01.在populateBean 方法中的&#xff1a;用于Autowird&#xff0c;Resource注入 // 后处理器已经初始化boolean hasInstAwareBpps hasInstantiationAwareBeanPostProcessors();// 需要依赖检查boolean needsDepCheck (mbd.getDependencyCheck() ! AbstractBeanDefinition.DEP…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-15.4讲 GPIO中断实验-IRQ中断服务函数详解

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

代码随想录算法训练营Day35 | 435. 无重叠区间、763.划分字母区间、56. 合并区间 | Python | 个人记录向

本文目录 435. 无重叠区间做题基于左边界的贪心算法基于左边界&#xff0c;把452.用最少数量的箭引爆气球代码稍做修改 763.划分字母区间做题看文章 56. 合并区间做题看文章 以往忽略的知识点小结个人体会 435. 无重叠区间 代码随想录&#xff1a;435. 无重叠区间 Leetcode&am…

三生随记——耳机里的诅咒

深夜&#xff0c;城市的灯火已经渐渐熄灭&#xff0c;只剩下一轮明月孤独地悬挂在天空中&#xff0c;洒下银白色的光芒。在这样一个寂静的夜晚&#xff0c;李浩独自一人坐在昏暗的房间里&#xff0c;耳机紧紧贴在耳边&#xff0c;他正在观看一部知名的恐怖电影。 电影里的恐怖情…

java对象互换工具类

1:将Object类型转成json字符串 /*** 将对象转为字符串* param obj* return*/public static String toString(Object obj) {if(obj null) {return null;}if ("".equals(obj.toString())) {return null;}if (obj instanceof String) {return obj.toString();}try {Ob…

Spring Cloud Gateway 11种断言工厂

系列文章目录 文章目录 系列文章目录前言前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 Spring Cloud Gateway路由匹配是Spring WebFlux基础功能的一部分,在Spri…

js将html网页转换成PDF并解决了图表文字被切割的问题

给页面内所有要转换成PDF的HTML元素添加一个class“toPDF” 输出的时候&#xff0c; 遍历所有class"toPDF"的HTML元素 将它们逐个加入到pdf文档中&#xff0c;添加的时候如果超出的则添加一页 一、安装 npm install --save html2canvas npm i jspdf --save二、html…

ruoyi-vue-pro 使用记录(2)

ruoyi-vue-pro 使用记录&#xff08;2&#xff09; 数据库商城商品模块数据表营销数据库交易数据库统计数据库 数据库 商城 参考官方文档 ruoyi-vue-pro yudao 项目商城 mall 模块启用及相关SQL脚本 商品模块&#xff08;中心&#xff09;以 product_ 作为前缀的表交易模块…

Acwing2024蓝桥杯并查集

并查集模板 int n,dad[N],sizee[N];//sizee数组规定只有祖宗结点是有效值 //初始化所有集合 void Init(){for(int i1;i<n;i){dad[i]i;sizee[i]1;}return ; } //查找a的祖宗节点 int Find(int a){if(dad[a]!a) dad[a]Find(dad[a]);//每个集合中只有祖宗节点的值等于自身的值…

你认识edge吗,edge是做什么的

简介 Microsoft Edge&#xff08;研发代号为Project Spartan&#xff0c;又译作微软边缘浏览器&#xff0c;Edge浏览器&#xff09;是一个由微软研发的基于Chromium开源项目及其他开源软件的网页浏览器&#xff0c;于2015年1月21日公布&#xff0c;2015年3月30日公开发布第一个…

pyqt曲线轨迹运动

pyqt曲线轨迹运动 pyqt QPropertyAnimation介绍曲线轨迹运动代码 pyqt QPropertyAnimation介绍 QPropertyAnimation 是 PyQt中的一个类&#xff0c;它用于对 Qt 对象的属性进行动画处理。通过使用 QPropertyAnimation&#xff0c;你可以平滑地改变一个对象的属性值&#xff0c…

闭散列哈希表

一、什么是 哈希 &#xff1f; 1.1 哈希概念 与 哈希冲突 在正式介绍闭散列哈希之前&#xff0c;我们需要明确 哈希 的概念。 哈希 &#xff1a;构造一种数据存储结构&#xff0c;通过函数 HashFunc() &#xff0c;使 元素的存储位置 与 其对应的键值 建立一一映射关系&…

国产开源物联网操作系统

软件介绍 RT-Thread是一个开源、中立、社区化发展的物联网操作系统&#xff0c;采用C语言编写&#xff0c;具有易移植的特性。该项目提供完整版和Nano版以满足不同设备的资源需求。 功能特点 1.内核层 RT-Thread内核包括多线程调度、信号量、邮箱、消息队列、内存管理、定时器…

JVM基础之垃圾回收

垃圾回收 1. Base 内存泄漏&#xff1a;不再使用的对象在系统中未被回收 内存溢出&#xff1a;内存泄漏的积累 手动触发垃圾回收&#xff1a;System.gc(),该方法不一定会立即回收垃圾&#xff0c;仅仅是向JVM发送一个垃圾回收请求&#xff0c;具体是否需要垃圾回收由JVM自行…

项目ElasticSearch 6.8 安装配置

配置文件位置: 程序配置文件&#xff1a;/etc/elasticsearch/elasticsearch.ymljvm配置文件&#xff1a;/etc/elasticsearch/jvm.options 1. 确认基础环境 确认主机limit相关参数 grep vm.max_map_count /etc/sysctl.conf && sed -i "svm.max_map_count.*vm.m…

使用php和redis实现分布式锁

实现分布式锁是在分布式环境中确保资源独占性的重要手段。在这里&#xff0c;我将使用 PHP 和 Redis 来展示如何实现基于 Redis 的分布式锁。 首先&#xff0c;我们需要使用 Redis 的 SET 指令来尝试获取锁&#xff0c;并设置一个过期时间&#xff0c;确保锁不会永久存在。在 …

怎么找回回收站里删除的XLS文件?5个恢复方法

我们经常会使用到XLS文件来存储和整理数据。然而有时候由于误操作或不小心&#xff0c;我们可能会将重要的XLS文件删除&#xff0c;并且这些文件可能还被清空出了回收站。面对这种情况许多人会感到焦虑和无助。但是不必过于担心&#xff0c;因为有专门的软件可以帮助我们找回这…

(Java)心得:LeetCode——5.最长回文子串

一、原题 给你一个字符串 s&#xff0c;找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同&#xff0c;则该字符串称为回文字符串。 示例 1&#xff1a; 输入&#xff1a;s "babad" 输出&#xff1a;"bab" 解释&#xff1a;"aba"…