POJ 1088 滑雪——解题报告

滑雪问题(记忆化搜索) 注:由于本题有多种不同版本,这里统一用XXX和YYY代替不同的专有名词 【问题描述】 XXX喜欢滑雪,这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待YYY来载你。XXX想知道载一个区域中最长的滑坡。 区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子: 顺治可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-…-3-2-1更长。事实上. 阅读详情

题目来源:http://poj.org/problem?id=1088

题目描述

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。

 

输出描述

输出最长区域的长度。


解题报告:

dp+dfs,动态方程就是拿该点与周围四个点比较,如果比它大,那么就在周围点的最长值上加1,然后比较出四个方向中最大的长度即为该点的长度,动态方程即为:

dp[x][y]=max{dp[x][y],dp[i][j]+1},(i,j即为四个方向的坐标).


import java.util.Scanner;


public class N32Skiing {

	static int[][] result;
	static int max = 0;
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int m = sc.nextInt();
		int n = sc.nextInt();
		double[][] a = new double[m][n];
		result = new int[m][n];
		for(int i=0;i<m;i++){
			for(int j=0;j<n;j++){
				a[i][j] = sc.nextDouble();
				result[i][j]=0;
			}
		}
		for(int i=0;i<m;i++){
			for(int j=0;j<n;j++){
				result[i][j] = Calculate(a,m,n,i,j);
				if(result[i][j]>max){
					max = result[i][j];
				}
			}
		}
		System.out.println(max);
	}
	private static int Calculate(double[][] a,int m,int n, int i, int j) {
		if(result[i][j]>0){
			return result[i][j];
		}
		int te=0,x;
		if(j-1>=0&&a[i][j]>a[i][j-1]){
			x=Calculate(a,m,n,i,j-1);
			if(x>te){
				te =x;
			}
		}
		if(j+1<n&&a[i][j]>a[i][j+1]){
			x=Calculate(a,m,n,i,j+1);
			if(x>te){
				te=x;
			}
		}
		if(i-1>=0&&a[i][j]>a[i-1][j]){
			x=Calculate(a,m,n,i-1,j);
			if(x>te){
				te=x;
			}
		}
		if(i+1<n&&a[i][j]>a[i+1][j]){
			x=Calculate(a,m,n,i+1,j);
			if(x>te){
				te=x;
			}
		}		
		return te+1;
	}

}



滑雪(动态规划) 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 阅读详情

相关推荐

70、1280:【例9.24】滑雪(2020.02.08)-A.pdf

70、1280:【例9.24】滑雪(2020.02.08)-A

最长滑雪道-蓝桥杯练习-python实现

最长滑雪道 问题描述   小袁非常喜欢滑雪, 因为滑雪很刺激。为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。 小袁想知道在某个区域中最长的一个滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。如下:   在这里插入图片描述 一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-…-3-2-1更长。事实上,这是最长的一条。   你的任务就是找到最长的一条滑坡,并且将滑

weixin_44621957的博客 776

YOLOv5实战:无人机巡检图片差异对比与违建标记(附完整代码)

本文详细介绍了如何利用YOLOv5目标检测技术实现无人机巡检图片差异对比与违建标记。通过图像对齐、目标检测、差异分析和可视化标记四个步骤,构建高效的违建识别系统,显著提升城市管理效率。文章包含完整代码实现和性能优化技巧,为计算机视觉在无人机巡检中的应用提供实用指南。

weixin_42535720的博客 280

最长滑雪道(递归 dfs dp)

问题描述 滑雪区域由一个二维数组给出。数组的每个数字代表点的高度。如下: 一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-…-3-2-1更长。事实上,这是最长的一条。 你的任务就是找到最长的一条滑坡,并且将滑坡的长度输出。 滑坡的长度定义为经过点的个数,例如滑坡24-17-16-1的长度是4。 递归+dfs思想: 首先一个点要向上下左右四个方向移动,就可以定义两个一维数组(也可以是一个二维数组)来组成这四个方向:

weixin_47060099的博客 1115

工业机器人关节拆装流程_一文读懂模块化直驱电机及机器人关节模组

私信“干货”二字,即可领取138G伺服与机器人专属及电控资料!如果说芯片是智能行业最为重要的核心元件,那么电机几乎可以说是支撑了整个自动化和大工业生产以及现代社会最为重要的部件,全世界90%的能源是由电机发出来的,而70%是由电机消耗调的,电机可以说是整个人类社会能源循环的占有绝对地位的产品。普通伺服电机伺服电机其实已经算是电动机中比较高端的类型,特别是永磁同步类型的伺服电机,由于其启动快速,惯量...

weixin_32159771的博客 2152

【VisualStdio】手把手教你做一个上位机(1)控件设计布局

网上有很多形形色色的制作上位机教程,有些写的挺好的,但是过于单调。

m0_73409202的博客 5435

nyoj 10 skiing

大神的思路:   记忆化搜索+动态规划。从某一个点出发,向四个方向探索,找出一条最长的路径,然后再从所有最长路径中找一个最最长的,即为所求。 普通搜索的思路就是从一个点开始向四个方向探索,同时用一个变量s进行长度的累加。每次四面都不能走了的时候,就比较max与当前s,进行max的更新。 但这样就出现一个问题。每次搜到一个点,不管这个点是否已经探索过,都要再搜索一次,以达到求出最长

W_904038290的博客 429

ProgLoss+STAL 技术详解:YOLO26 小目标检测增强方案

本文提出了一种基于ProgLoss渐进式损失函数和STAL小目标感知标签分配的YOLO26增强方案。针对小目标检测中特征信息少、正负样本不平衡等难题,STAL通过尺度感知的标签分配策略动态调整候选样本数量和IoU阈值,为小目标分配更多正样本;ProgLoss则根据训练阶段动态调整分类和回归损失的权重,早期侧重定位能力,后期加强分类精度。实验表明,该组合方案显著提升了小目标检测性能,在COCO数据集上小目标AP达到38.2%,比基线提升6.5个百分点。该方法为遥感、监控等场景的小目标检测提供了有效解决方案。

一键难忘的博客 1283

POJ 1088 滑雪 解题报告

算法:动态规划(记忆化搜索)用dp时,最好先想好递归的解法,再转换成记忆化搜索。#include#define MAX 101int height[MAX][MAX];int flag[MAX][MAX];int LongestLength(int i, int j, int r, int c){    int max = 0, a[4], k;    if(flag[i][j] !=

路雪军 Carl 4197

二、TCP/IP协议之网络层(IP地址的格式、分类、报文格式)

数据报每经过一个路由器,路由器都要重新计算一下首部检验和,若首部未发生变化,则此结果必为 0,于是就保留这个数据报。对于网络号相的设备,无论实际所处的物理位置如何,它们都是处在同一个网络中。在首部的固定部分的后面是一些可选字段,其长度是可变的。IPv4 软件在存储器中维持一个计数器,每产生一个数据报,计数器就加 1,并将此值赋给标识字段。表示数据报在网络中的寿命,英文缩写是 TTL(Time To Live),功能是“跳数限制”。地址的网络号码字段用来标识一个网络,网络号码字段的前几位用来区分。

锦慈的技术博客 184

手把手教你RK3568 MIPI屏驱动适配,纯干货!

RK3568 作为一款高性能的多媒体处理器,在嵌入式领域中备受瞩目。它采用了先进的 22nm 制程工艺,搭载四核 Cortex-A55 处理器,这种架构为芯片提供了高效的功耗比,使其在运行各种复杂任务时,既能保证性能,又能有效控制功耗。在实际应用中,无论是多任务处理还是运行大型应用程序,RK3568 都能凭借其四核 Cortex-A55 处理器,实现流畅的操作体验,满足智能设备对高性能和低功耗的需求。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 4068

poj1088 滑雪 解题报告

题意很清楚,让下山的路最长,用dp+递归可以解决 每一个len[i][j]进去找,上下左右,找到四周最大的,然后加上1,要是四周都不符合条件,就会返回0+1,所以这格的最大是1 循环里存一下最大值,这样把所有点遍历一遍即可 #include #include #include using namespace std; int fx[4][2]={{1,0},{0,1},{-1,0},

小夥的博客 775

【系统分析师】2025年下半年真题:案例分析-答案及详解(回忆版)

Redis相比Memcached在电商高并发场景下具有显著优势:支持持久化(RDB/AOF)、丰富数据结构(如有序集合实现排行榜)、原生支持集群和哨兵模式(高可用性)。布隆过滤器通过位数组和哈希函数预先存储所有合法订单ID,当查询请求到达时快速拦截无效ID(如伪造ID),避免其穿透缓存直接冲击数据库,从而预防缓存击穿问题。

数据知道的博客 5982

滑雪 poj1088 解题报告

Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子  1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23

xxm137164869的专栏 1457

RK3568平台开发系列讲解(DMA篇)DMA engine使用

DMA传输属于异步传输,在启动传输之前,slave driver需要将此次传输的一些信息(例如src/dst的buffer、传输的方向等)提交给dma engine(本质上是dma controller driver),dma engine确认okay后,返回一个描述符(由struct dma_async_tx_descriptor抽象)。DMA_PREP_PQ_DISABLE_P、DMA_PREP_PQ_DISABLE_Q、DMA_PREP_CONTINUE,PQ有关的操作,TODO。

内核笔记 1721

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【原】 POJ 1088 滑雪 递归+memoization 解题报告

http://poj.org/problem?id=1088 方法: 如果递归式易得,但初始条件以及算法过程不好分析,以至于循环DP不好写的话,则可以采用递归+记忆 的方法实现DP c[i][j]:从(i,j)开始的最长路径 c[i][j] = max{ c[i-1][j], c[i+1][j], c[i][j-1], c[i][j+...

ajiaxi111111的博客 170

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

POJ1088 滑雪 解题报告

Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 ...

weixin_30852451的博客 106

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

POJ 1088 滑雪(动态规划)(解题报告)

Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 1

CSUST_ACM的专栏 1243

POJ 1088 滑雪 解题报告(记忆化搜索)

滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 96997   Accepted: 36774 题目连接:POJ1088 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡

Roy在编程 608

POJ-1088-滑雪-解题报告-动态规划-记忆化搜索

在给出这道题的解题报告之前,先看下记忆化搜索的个人理解。 以最简单的递归求阶乘的函数进行说明。 常见的求阶乘的代码是这样的: int fac(int n) { if(n == 1) return 1; else return n * fac(n - 1); } 为了实现不重复递归调用,使用一个全局数组对已求得的结果进行保存;另外,每次返回结果前,都对全局数组进行相应赋值。

Leo的博客 2470

POJ 1088 滑雪 (深搜)

题目链接:http://poj.org/problem?id=1088 题面: 滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 83760   Accepted: 31349 Description     Michael喜欢滑雪这并不奇怪,

David_Jett 1340
上一篇: 最大子段和——解题报告
下一篇: 约瑟夫环——解题报告
EmanuelBlog
博客等级 码龄15年 19粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值