度小满校招后端研发第2批编程题Java题解

1、坚强的小昆虫

由于新冠肺炎疫情的爆发,小明养在宿舍的小昆虫已经很久很久都没有人管了。小昆虫已经饿的不行了,必须出来找东西吃,可是出来之后需 要走出一个迷宫。小昆虫每次可以朝上、下、左、右四个方向之一走一步,且只要走出任意一条边界线即可逃出迷宫。这只小昆虫曾感染过X星 的一种奇异病毒,目前还没有发现任何副作用,但是却拥有了一项特异功能——破坏障碍物。 假设小昆虫在一个NM的迷宫中,"@“代表小昆虫的初始位置,”.“代表可以通过的空地,”“代表可以破坏的障碍物,”#"代表不可破坏的障碍 物。请问小昆虫最少需要使用多少次特异功能才可以逃出迷宫?

这是一道迷宫变式题:关键点在于可以破坏障碍物,因此需要分情况DFS

import java.util.*;
import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {static int[][] dir = {{1,0}, {-1,0}, {0,1}, {0,-1}};public static void main(String[] args) {Scanner in = new Scanner(System.in);int T = in.nextInt();while (T > 0) {T--;int n = in.nextInt();int m = in.nextInt();char[][] mat = new char[n][m];boolean f = true;int sx = 0, sy = 0;for(int i = 0; i < n; i++){// Java无法一个一个字符读入,直接读取一整行再转为数组mat[i] = in.next().toCharArray();for(int j = 0; f && j < m; j++){if(mat[i][j] == '@'){sx = i; sy = j;f = false;}}}// DFS// 标记是否访问过boolean[][] vis = new boolean[n][m];// 记录所有的结果List<Integer> ans = new ArrayList<>();dfs(sx, sy, 0, vis, ans, mat);Collections.sort(ans);System.out.println(ans.get(0));}}private static void dfs(int sx, int sy, int cnt, boolean[][] vis, List<Integer> ans, char[][] mat){vis[sx][sy] = true; // 已访问int f = 0;for(int[] x : dir){int dx = sx + x[0];int dy = sy + x[1];if(dx < 0 || dx >= vis.length || dy < 0 || dy >= vis[0].length){// 达到边界ans.add(cnt);return;}// 如果当前点四周都是#, 则一定不能走出去if(mat[dx][dy] == '#')f++;if(!vis[dx][dy]){// 分情况if(mat[dx][dy] == '.'){dfs(dx, dy, cnt, vis, ans, mat);}else if(mat[dx][dy] == '*'){dfs(dx, dy, cnt+1, vis, ans, mat);}}}if(f == 4){ans.add(-1); // 走不出去return;}}
}
2、涂色

小A正在学画画,现在,线稿已经画好了,只剩下涂色部分了。但是小A发现,他的颜料不够了。每一块颜料能涂一个色块,每一个色块的颜色 是事先决定好了的。 由于颜料不够,小A只能尽其所能来涂色。如果一个色块没有了颜料,就不能涂色。现在,给你画中需要的色块颜色,和小A现在手上有的颜 料,请你计算小A能涂多少个色块。

使用Hash思想:将字符串s1转为长度为26的数组,对每个字符进行次数统计,然后遍历s2,计数不能涂色的数量cnt,最后结果就是字符串长度减去cnt

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);String s1 = in.next();String s2 = in.next();int[] a1 = new int[26];for(char c : s1.toCharArray()){a1[c-'A']++;}int cnt = 0;for(char c : s2.toCharArray()){if(a1[c - 'A'] > 0){a1[c - 'A']--;}else{cnt++;}}System.out.println(s1.length() - cnt);}
}

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

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

相关文章

打造新质生产力,亚信科技2024年如何行稳致远?

引言&#xff1a;不冒进、不激进&#xff0c;稳扎稳打&#xff0c; 一个行业一个行业地深度拓展。 【全球云观察 &#xff5c; 科技热点关注】 基于以往“一巩固、三发展”的多年业务战略&#xff0c;亚信科技正在落实向非通信行业、标准产品、软硬一体产品和国际市场的“四…

无人机群全局一致性后端优化

视觉全局一致性 目的&#xff1a;不同无人机看到同一个路标点时&#xff0c;可以构建重投影误差来优化位姿 重点学习参考vins前端图像跟踪 双目模式vins VIO 入口为rosNodeTest.cpp&#xff0c;首先利用sync_process()中先读取配置文件&#xff0c;再调用estimator.inputIma…

Flink Temporal Join 系列 (1):用 Temporal Table DDL 实现基于事件时间的关联

本文要演示的是:使用 Temporal Table DDL 定义被关联表(维表),然后基于主动关联表(事实表)的“事件时间”去进行Temporal Join(关联时间维度上对应版本的维表数据)。该演示涉及三个要点: 被关联的表(维表)是用 Temporal Table DDL 形式定义,必须是一张时态表(版本…

FM索引的保存和加载

在SDSL库中构建的FM索引可以保存到磁盘上以便以后加载和重用。SDSL提供了一些方法来实现这一点。你可以使用serialize()函数将FM索引对象序列化为二进制格式,并将其写入文件中。然后,你可以使用load()函数来从文件中加载并重新构建FM索引对象。 #include <iostream> #…

Java-Java基础学习(5)-注解和反射以及类的加载过程分析

4.1 注解的理解 Annotation是从JDK5.0开始引入的新技术 Annotation的作用 不是程序本身&#xff0c;可以对程序作出解释&#xff08;这点和注释comment没什么区别&#xff09;&#xff1b;可以被其他程序&#xff08;比如&#xff1a;编译器等&#xff09;读取&#xff1b; A…

00X基于Jetson Nano+yolov4-tiny的目标检测

本节将详细介绍如何在Jetson Nano平台上搭建基于YoloV4-tiny模型的对象检测系统。 说在最前面&#xff0c;本篇文档的许多内容来自多篇技术文档&#xff0c;我只是结合自己的学习经历&#xff0c;进行了加工和组合 1.1 Why Yolo V4-tiny&#xff1f; 在介绍具体内容之前&…

Spring异步注解@Async线程池配置

系列文章目录 文章目录 系列文章目录前言前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 从Spring3开始提供了@Async注解,该注解可以被标注在方法上,以便异步地调…

多段智能功率分配,双设备同时快充,乐得瑞LDR6020 一分拖二PD 快充线方案

随着移动设备的普及和功能的日益增强&#xff0c;电池续航成为了用户关注的重点之一。为了满足用户对于快速充电的需求&#xff0c;各大厂商纷纷推出了各种快充技术和产品。在这个背景下&#xff0c;乐得瑞公司推出了一款名为LDR6020的一分二PD快充线方案&#xff0c;该方案采用…

处理登录失效后提示多个错误

问题: 我的场景是后端规定&#xff0c;即使登录失效返回的code仍是200&#xff0c;然后data的code是999什么的&#xff1b; 原本代码&#xff1a; 修改版代码&#xff1a; 通过节 const NotLoginEvent () > {router.replace("/login");localStorage.clear();M…

想学Solidworks二次开发进来看下

序号标题1H1&#xff1a;Solidworks二次开发简介2H2&#xff1a;Solidworks的基础了解3H3&#xff1a;什么是Solidworks二次开发&#xff1f;4H3&#xff1a;为什么选择Solidworks二次开发&#xff1f;5H2&#xff1a;Solidworks二次开发的优势6H3&#xff1a;提高生产效率7H3&…

【PyTorch】解决PyTorch安装中torch.cuda.is_available()返回False的问题

最近在安装PyTorch时遇到torch.cuda.is_available() False的问题&#xff0c;特此记录下解决方法&#xff0c;以帮助其他遇到相同问题的人。 问题描述 Ubuntu 20.04&#xff0c;3060 Laptop&#xff0c;安装了CUDA 11.4&#xff0c;在Anaconda下新建了Python 3.8的环境&…

websocket上传大文件导致连接端开,上送失败解决方案

出现原因&#xff0c; 首先web端与服务端进行websocket连接&#xff0c;服务端给设备下发指令&#xff0c;设备给服务器上送文件&#xff0c;然后服务端通过websocket给web端上送&#xff0c;但是发现终端上送的小文件通过websocket给web端上送&#xff0c;但是大文件会导致we…

为何众多编程语言呈现出相似性:结构、功能与进化的必然性

在计算机科学领域&#xff0c;各类编程语言层出不穷&#xff0c;从早期的FORTRAN、C语言&#xff0c;到如今流行的Python、Java、JavaScript等&#xff0c;虽然每种语言都有其独特之处&#xff0c;但在核心概念、语法结构和设计原则等方面却展现出惊人的相似性。本文旨在探讨造…

Flume详解

Source AVRO Source AVRO Source接收被AVRO序列化之后的数据&#xff0c;结合AVRO Sink&#xff0c;可以实现复杂的流动模型 案例 编辑文件 cd /opt/software/flume-1.11.0/data/ vim avrosource.properties 在文件中添加 a1.sources s1 a1.channels c1 a1.sinks k1 ​ # …

python的ITS 信息平台的设计与实现flask-django-nodejs-php

第二&#xff0c;陈列说明该系统实现所采用的架构、系统搭建采用的服务器、系统开发环境和使用的工具&#xff0c;以及系统后台采用的数据库。 最后&#xff0c;对系统进行全面测试&#xff0c;主要包括功能测试、查询性能测试、安全性能测试。 分析系统存在的不足以及将来改进…

stable-diffusion-electron-clickstart 支持windows AMD显卡

前言 使用vue3 vite electron element-plus构建&#xff0c;正好学习下electrongithub stable-diffusion “画境导航者” 启动器 简介 stable-diffusion “画境导航者” 启动器支持功能 一键启动打开文件夹&#xff08;tmp、txt2img-images&#xff09;等模型所在文件夹&…

ios symbolicatecrash 符号化crash

一、准备 1.1 .crash 文件获取 设备连接电脑 打开XCode, 依次 XCode -> Windows -> Device and Simulator -> Open Recent Logs 找到 (对应app名+时间点) -> 右键 Show in Finder 1.2 .dSYM 和 .app 文件获取 .dSYM是十六进制函数地址映射信息的中转文件,调试的…

中国光伏展

河北省京津冀国际光伏展是一场专注于光伏产业的展览会。作为中国光伏行业的重要展会之一&#xff0c;该展会旨在推动京津冀地区光伏产业的发展&#xff0c;促进光伏技术的交流与合作。 光伏展将汇集来自国内外的光伏企业、科研机构、专家学者等相关人士&#xff0c;展示最新的光…

面试算法-84-删除有序数组中的重复项

题目 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k &#x…

C语言中__attribute__()

__attribute__() 属性: interrupt(“”) 我们知道&#xff0c;当发生中断的时候&#xff0c;系统会通过中断向量表跳转到相应的函数中并执行。等中断服务函数执行完后&#xff0c;又继续回到程序中。因此这个过程中涉及到一个现场的保护和恢复。那是否需要在中断处理函数里去…