当前位置: 首页 > news >正文

dfs深度搜索入门之滑雪

P1434 [SHOI2002] 滑雪 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

本题我们主要使用了深度搜索和记忆化搜所。

首先我们可从任意一点开始滑行,这要求我们每一个点都进行一次深搜。但是如果每个点进行的话肯定会有许多个点重复被寻找最长滑雪长度,怎么办呢?这就轮到记忆化搜所了。我们每找到一个点就把这个点的最长化学长度保存起来。具体原理,我放在代码注释中。

public static int[][] aa;//每个点的高度
public static int bb;
public static int cc;
public static int[][] record;//记录任意一点得到最大化学长度
public static boolean[][] visited;//记录这一点有没有被探索过
public static int[] xx= {-1,1,0,0};///枚举位置
public static int[] yy= {0,0,-1,1};
public static int dfs(int a,int b) {if(visited[a][b]==true) {///如果一个点我们之前已经搜索过了直接返回这个点的最大滑雪长度return record[a][b];}int answer=0;record[a][b]=1;//若这个点没被探索过,我们先把其赋值为1因为任意一点滑雪长度至少是他自己就是1visited[a][b]=true;//接下来开始搜索这个点,先提前标记为·1int c;for(c=0;c<4;c++) {//往这个点的四个方位搜索int x=xx[c]+a;int y=yy[c]+b;if(x<0||x>=bb||y<0||y>=cc) {continue;}if(aa[a][b]>aa[x][y]) {//找到这四个方位最大长度answer=Math.max(answer, dfs(x, y));}}record[a][b]= record[a][b]+answer;加上去return record[a][b];
}}

完整代码:


import java.awt.FontFormatException;
import java.io.BufferedReader; 
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.lang.reflect.AnnotatedWildcardType;
import java.math.BigInteger;
import java.net.DatagramPacket;
import java.sql.SQLIntegrityConstraintViolationException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.Map;
import java.util.Objects;
import java.util.PriorityQueue;
import java.util.Scanner;
import java.util.Spliterator.OfPrimitive;
import java.util.function.IntToDoubleFunction;
import java.util.function.LongBinaryOperator;
import java.util.TreeMap;
import java.util.TreeSet;
import javax.management.relation.InvalidRelationTypeException;
import javax.print.attribute.standard.JobMessageFromOperator;
import javax.print.attribute.standard.JobPriority;
import javax.swing.plaf.ColorChooserUI;
import javax.swing.table.TableModel;
import javax.swing.text.TabSet;
import javax.xml.crypto.dsig.spec.DigestMethodParameterSpec;
public class Main {public static void main(String[] args) throws IOException  {
Scanner sc=new Scanner(System.in);
BufferedReader br1=new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw1=new PrintWriter(System.out);
String[] aStrings=br1.readLine().split(" ");
bb=Integer.parseInt(aStrings[0]);
cc=Integer.parseInt(aStrings[1]);
aa=new int[bb+1][cc+1];
record=new int[bb+1][cc+1];
visited=new boolean[bb+1][cc+1];
int a,b;
for(a=0;a<bb;a++) {String[] bStrings=br1.readLine().split(" ");for(b=0;b<cc;b++) {aa[a][b]=Integer.parseInt(bStrings[b]);}
}
int ans=0;for(a=0;a<bb;a++) {for(b=0;b<cc;b++) {ans=Math.max(ans, dfs(a, b));}
}
System.out.println(ans);
}
public static int[][] aa;
public static int bb;
public static int cc;
public static int[][] record;
public static boolean[][] visited;
public static int[] xx= {-1,1,0,0};
public static int[] yy= {0,0,-1,1};
public static int dfs(int a,int b) {if(visited[a][b]==true) {return record[a][b];}int answer=0;record[a][b]=1;visited[a][b]=true;int c;for(c=0;c<4;c++) {int x=xx[c]+a;int y=yy[c]+b;if(x<0||x>=bb||y<0||y>=cc) {continue;}if(aa[a][b]>aa[x][y]) {answer=Math.max(answer, dfs(x, y));}}record[a][b]= record[a][b]+answer;return record[a][b];
}}

相关文章:

dfs深度搜索入门之滑雪

P1434 [SHOI2002] 滑雪 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 本题我们主要使用了深度搜索和记忆化搜所。 首先我们可从任意一点开始滑行&#xff0c;这要求我们每一个点都进行一次深搜。但是如果每个点进行的话肯定会有许多个点重复被寻找最长滑雪长度&#xff0c;…...

Python程序设计——元组、集合和字典

可以使用元组存储一个固定的元素列表&#xff0c;使用集合存储和快速访问不重复的元素、使用字典存储键值对并使用这些关键字来快速访问元素。 一、元组 元组跟列表类似&#xff0c;但是元组中的元素是固定的;也就是说&#xff0c;一旦一个元组被创建,就无法对元组中的元素进行…...

八股文之框架篇(Spring Boot、SSM)

文章目录 Spring中的单例bean是线程安全的吗什么是AOP&#xff0c;项目中有没有使用到AOPSpring中的事务是如何实现的Spring中事务失效的场景有哪些Bean的生命周期Spring中的循环依赖&#xff08;循环引用&#xff09;SpringMVC的执行流程SpringBoot自动配置原理Spring、Spring…...

[PaddlePaddle] [学习笔记] [上] 计算机视觉(卷积、卷积核、卷积计算、padding计算、BN、缩放、平移、Dropout)

1. 计算机视觉的发展历程 计算机视觉作为一门让机器学会如何去“看”的学科&#xff0c;具体的说&#xff0c;就是让机器去识别摄像机拍摄的图片或视频中的物体&#xff0c;检测出物体所在的位置&#xff0c;并对目标物体进行跟踪&#xff0c;从而理解并描述出图片或视频里的场…...

【JS 贪心算法常见步骤】

贪心算法是一种解决优化问题的算法&#xff0c;其思想是在每一步选择中选择当前状态下最优解&#xff0c;从而达到全局最优解的目的。 以下是贪心算法的一些常见步骤&#xff1a; 将问题模型化为一个包含若干子问题的问题集合&#xff0c;每个子问题都有一个最优解。 对于每个…...

应用案例|基于三维机器视觉的机器人纸箱拆码垛应用解决方案

Part.1 项目背景 在现代物流和制造行业中&#xff0c;纸箱的拆码垛操作是一项重要且频繁的任务。传统的纸箱拆码垛工作通常由人工完成&#xff0c;这种方式存在劳动强度大、生产效率低以及人为操作容易导致错误等问题&#xff0c;严重影响物料的安全运输和质量。为了满足物流行…...

【ARM 嵌入式 编译 Makefile 系列 10 - Makefile sort 函数详细介绍】

文章目录 Makefile 函数 sort 学习Makefile 函数 sort 学习 sort 是Makefile的一个内建函数,它用于将列表中的词进行排序,并删除重复的词。sort函数的语法如下: $(sort list)list是你想要排序的单词列表。 下面是一个使用sort函数的简单示例: FOO = c b a c b a BAR =…...

Flask下载文件报错304 NOT MODIFIED

文章目录 问题描述解决方案参考文献 问题描述 前端 Vue 下下来的文件无法正常打开&#xff0c;大小比正常的略大一点&#xff0c;通过 Postman 直接调用是正常的 解决方案 由前端解决 如果响应大小比文件略大一点&#xff0c;从 responses 中取出关键数据再组成文件如果响应…...

AI Chat 设计模式:15. 桥接模式

本文是该系列的第十五篇&#xff0c;采用问答式的方式展开&#xff0c;问题由我提出&#xff0c;答案由 Chat AI 作出&#xff0c;灰色背景的文字则主要是我的一些思考和补充。 问题列表 Q.1 如果你是第一次接触桥接模式&#xff0c;那么你会有哪些疑问呢&#xff1f;A.1Q.2 什…...

Python批量替换Excel和Word中的关键字

一、问题的提出 有时&#xff0c;我们手头上有多个Excel或者Word文件&#xff0c;但是领导突然要求对某几个术语进行批量的修改&#xff0c;你是不是有要崩溃的感觉。因为这么多文件&#xff0c;要一个一个地打开文件&#xff0c;再进行批量替换修改&#xff0c;几个文件还好&…...

Codeforces算法心得——A. Array Coloring

大家好&#xff0c;我是晴天学长&#xff0c;确实全世界最大的算法竞赛平台有很多独特且创新的地方&#xff0c;后面我会持续的更新的&#xff01;加油&#xff01;&#x1f4aa;&#x1f4aa;&#x1f4aa; 1 &#xff09;A. Array Coloring 2) .算法思路 数组中的奇数个数一…...

论文阅读:《Waymo Public Road Safety Performance Data》

文章目录 1 背景2 方法2.1 数据来源2.2 碰撞数据 3 碰撞事件分析4 讨论 1 背景 这篇文章是讲waymo道路安全性能数据分析的&#xff0c;主要想表达的是waymo自动驾驶系统在安全上面的出色表现&#xff0c;以向政府、大众提高自己产品的公信力。 这篇文章分析的数据是自从2019年到…...

url中的特殊符号及特殊字符编码对照表

有些符号在URL中是不能直接传递的&#xff0c;如果要在URL中传递这些特殊符号&#xff0c;那么就要使用他们的编码了。 编码的格式为&#xff1a;%加字符的ASCII码&#xff0c;即一个百分号%&#xff0c;后面跟对应字符的ASCII&#xff08;16进制&#xff09;码值。例如 空格的…...

【C++】详解用标准库的std::mt19937生成随机数

2023年8月16日&#xff0c;周三晚上 写了1个半小时 目录 概述英文文档什么是mt19937什么是状态大小头文件std::mt19937的常用成员函数1. 构造函数&#xff1a;2. 种子操作函数&#xff1a;3. 随机数生成函数&#xff1a;4. 辅助函数&#xff1a;生成种子值方法1&#xff1a;使…...

科大讯飞发布星火认知大模型2.0版——体验实测

8月15日&#xff0c;科大讯飞举行讯飞星火认知大模型V2.0升级发布会&#xff0c;对外展示其升级后的大模型代码能力和多模态能力&#xff0c;同时发布并升级搭载讯飞星火认知大模型V2.0能力的多项应用和产品。自5月6日首发以来&#xff0c;星火认知大模型经历V1.5版本的迭代&am…...

部署mysql到win10电脑上

中间出现了很多问题&#xff0c; 记录一下 我这边是去官网下载的 &#xff0c;链接&#xff1a;https://dev.mysql.com/downloads/mysql/ 我这边选了不是最新版本的MySQL&#xff0c;因为第一次安装8.1.0版本的&#xff0c;死活运行不起来&#xff0c;直接卸载安重装了&#x…...

nginx+php 出现502 bad gateway

nginxphp 出现502 bad gateway&#xff0c;一般这都不是nginx的问题&#xff0c;而是由于 fastcgi或者php的问题导致的&#xff0c;常见的有以下几种。 1. php.ini 的memory_limit 过小&#xff08;如果有个别php程序进程需要占用极大内存时这个必须注意&#xff09; 2. ph…...

基于LVQ神经网络的人脸朝向识别

1案例背景 1.1人脸识别概述 人脸识别作为一个复杂的模式识别问题,近年来受到了广泛的关注,识别领域的各种方法在这个问题上各显所长,而且发展出了许多新方法,大大丰富和拓宽了模式识别的方向。人脸识别、检测,跟踪、特征定位等技术近年来一直是研究的热点。人脸识别是人脸应用…...

Leetcode Top 100 Liked Questions(序号53~74)

53. Maximum Subarray 题意&#xff1a;一个数组&#xff0c;找到和最大的子串 我的思路 我记得好像On的动态规划来做的&#xff1f;但是想不起来了&#xff0c;先死做&#xff0c;用的前缀和——TLE超时 那就只能想想dp怎么做了 假设dp[i]表示的是以 i 为右端点的最大的…...

Rabbitmq消息不丢失

目录 一、消息不丢失1.消息确认2.消息确认业务封装2.1 发送确认消息测试2.2 消息发送失败&#xff0c;设置重发机制 一、消息不丢失 消息的不丢失&#xff0c;在MQ角度考虑&#xff0c;一般有三种途径&#xff1a; 1&#xff0c;生产者不丢数据 2&#xff0c;MQ服务器不丢数据…...

GitHub网络加速终极指南:如何实现10倍下载速度的智能优化方案

GitHub网络加速终极指南&#xff1a;如何实现10倍下载速度的智能优化方案 【免费下载链接】Fast-GitHub 国内Github下载很慢&#xff0c;用上了这个插件后&#xff0c;下载速度嗖嗖嗖的~&#xff01; 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 你是否曾…...

Illustrator批量替换脚本终极指南:5分钟掌握高效设计自动化

Illustrator批量替换脚本终极指南&#xff1a;5分钟掌握高效设计自动化 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 你是否曾经在Adobe Illustrator中花费数小时手动替换数十个甚…...

i.MX6Q烧录翻车实录:从‘No Device Connected’到‘Push error’,我拔掉一个USB WiFi才搞定

i.MX6Q烧录实战&#xff1a;当USB设备冲突遇上OTG接口的排查指南 那天下午的阳光透过窗户斜射进实验室&#xff0c;我正对着i.MX6Q开发板进行例行固件更新。Mfgtools工具已经准备就绪&#xff0c;开发板电源接通&#xff0c;一切看起来都很完美——直到屏幕上跳出那个令人沮丧…...

从SparseConvTensor到Rulebook:图解spconv稀疏卷积的核心工作流程

从SparseConvTensor到Rulebook&#xff1a;图解spconv稀疏卷积的核心工作流程 稀疏卷积&#xff08;Sparse Convolution&#xff09;作为处理3D点云数据的关键技术&#xff0c;正在重塑计算机视觉领域的格局。想象一下&#xff0c;当传统卷积神经网络在密集的2D图像上大展拳脚时…...

【必记】2026年 {论文题} |范文记忆提纲-A

第一篇&#xff1a;规划绩效域《论信息系统项目的规划绩效域》一、项目背景段落1&#xff1a;平台立项背景目的&#xff1a;推进智能制造建筑工业化&#xff0c;达成高效、高质、低耗、低排发起方&#xff1a;市住建局平台模块&#xff1a;十大功能模块&#xff08;市场监管、安…...

别再手动算矩阵了!COMSOL中矢量与矩阵变换的保姆级配置指南(附避坑点)

COMSOL中矢量与矩阵变换的高效配置与实战避坑指南 在COMSOL Multiphysics的建模过程中&#xff0c;矢量与矩阵操作是处理复杂物理场问题的核心技能之一。许多工程师和研究人员在初次接触COMSOL的变量定义系统时&#xff0c;往往会陷入一个误区——试图像常规编程语言那样直接定…...

Perplexity股票信息检索失效?7类常见报错代码对照表,含官方文档未披露的Rate Limit绕行方案

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Perplexity股票信息检索失效&#xff1f;7类常见报错代码对照表&#xff0c;含官方文档未披露的Rate Limit绕行方案 当调用 Perplexity API 查询实时股票信息&#xff08;如 PXLY、 NVDA&#xff09;时&…...

透明计费如何帮助精准预测与控制AI功能月度开支

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 透明计费如何帮助精准预测与控制AI功能月度开支 1. 项目背景&#xff1a;深度集成AI的网站 我们负责一个内容创作辅助网站&#x…...

别再只会用BurpSuite了!手把手教你用ZAP(Zed Attack Proxy)给Web应用做免费安全体检

从零开始掌握ZAP&#xff1a;开源Web安全测试实战指南 在当今快速迭代的Web开发领域&#xff0c;安全测试早已不是可选项而是必选项。当大多数开发者习惯性地打开BurpSuite时&#xff0c;他们可能忽略了开源世界中同样强大的替代方案——Zed Attack Proxy&#xff08;ZAP&#…...

告别点灯:用STM32+FPGA+FSMC做个数据吞吐测试仪(附Quartus与标准库工程)

STM32与FPGA联袂打造&#xff1a;高性能数据吞吐测试仪实战指南 在嵌入式系统开发中&#xff0c;总线通信性能往往是决定整体系统响应速度的关键瓶颈。对于硬件爱好者、电子工程师和学生群体而言&#xff0c;如何直观测量和优化总线传输效率&#xff0c;是一个既具挑战性又充满…...