【华为OD题库-096】洞穴探险-java

news/2024/7/20 19:32:50 标签: 华为od, java

题目

某探险队负责对地下洞穴进行探险。探险队成员在进行探险任务时,随身携带的记录器会不定期地记录自身的坐标,但在记录的间隙中也会记录其他数据。探索工作结束后,探险队需要获取到某成员在探险过程中相对于探险队总部的最远的足迹位置。
仪器记录坐标时,坐标的数据格式为(x.y),如(1,2)、(100,200),其中0<x<1000,0<y<1000。同时存在非法坐标,如(01,1)、(1,01),(0,100)属于非法坐标。
设定探险队总部的坐标为(0,0),某位置相对总部的距离为:x*x+y*y.若两个座标的相对总部的距离相同,则第一次到达的坐标为最远的足迹。若记录仪中的坐标都不合法,输出总部坐标(0,0)。
备注:
不需要考虑双层括号嵌套的情况,比如sfsdfsd((1,2))。
输入描述
字符串,表示记录仪中的数据。
如: ferga13fdsf3(100,200)f2r3rfasf(300,400)
输出描述
字符串,表示最远足迹到达的坐标。如:(300,400)
示例1
输入输出示例仅供调试,后台判题数据一般不包含示例输入
ferg(3,10)a13fdsf3(3,4)f2r3rfasf(5,10)
输出
(5,10)
说明
记录仪中的合法坐标有3个:(3,10),(3.4),(5,10),其中(5,10)是相距总部最远的坐标,输出(5,10)。
示例2
输入输出示例仅供调试,后台判题数据一般不包含示例
输入
asfefaweawfaw(0,1)fe
输出
(0,0)
说明
记录仪中的坐标都不合法,输出总部坐标(0,0)。

思路

字符串处理,利用正则提取出合法坐标,再找到最远的即可

题解

java">package hwod;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ExplorationCave {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        int[] res = explorationCave(str);
        System.out.println("(" + res[0] + "," + res[1] + ")");
    }

    private static int[] explorationCave(String str) {
        Pattern p = Pattern.compile("\\(\\d+,\\d+\\)");
        Matcher m = p.matcher(str);
        int[] res = new int[]{0, 0};
        while (m.find()) {
            String s = m.group();
            int[] location = Arrays.stream(s.substring(1, s.length() - 1).split(",")).mapToInt(Integer::parseInt).toArray();
            if (location[0] > 0 && location[1] > 0
                    && location[0] < 1000 && location[1] < 1000
                    && location[0] * location[0] + location[1] * location[1] > res[0] * res[0] + res[1] * res[1]) {
                res[0] = location[0];
                res[1] = location[1];

            }
        }
        return res;
    }
}

推荐

如果你对本系列的其他题目感兴趣,可以参考华为OD机试真题及题解(JAVA),查看当前专栏更新的所有题目。


http://www.niftyadmin.cn/n/5276553.html

相关文章

108基于matlab的使用模拟退火 (SA) 求解并行机器调度的程序

基于matlab的使用模拟退火 &#xff08;SA&#xff09; 求解并行机器调度的程序&#xff0c;程序已调通&#xff0c;可直接运行。 108 matlab模拟退火 &#xff08;SA) (xiaohongshu.com)

前后端分离下的鸿鹄电子招投标系统:使用Spring Boot、Mybatis、Redis和Layui实现源码与立项流程

在数字化时代&#xff0c;采购管理也正经历着前所未有的变革。全过程数字化采购管理成为了企业追求高效、透明和规范的关键。该系统通过Spring Cloud、Spring Boot2、Mybatis等先进技术&#xff0c;打造了从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通过…

如何理解归一化和对数转换 sc.pp.normalize_total sc.pp.log1p seurat scanpy

1 normalize # Normalize data sc.pp.normalize_total(adata_vis_plt, target_sum1e4)这段代码使用了sc.pp.normalize_total()函数对数据进行归一化处理。normalize_total()函数是Scanpy库&#xff08;用于单细胞RNA测序分析的Python库&#xff09;中的一个函数。它将adata_v…

PHP开发日志——循环和条件语句嵌套不同,效率不同(循环内加入条件语句,条件语句判断后加入循环,array_map函数中加入条件语句)

十多年前开发框架时&#xff0c;为了效率不断试过各种代码写法&#xff0c;今天又遇到了&#xff0c;想想php8时代会不会有所变化&#xff0c;结果其实也还是和当年一样&#xff0c;但当年没写博客&#xff0c;但现在可以把数据记录下来了。 项目基本情况是一个考试系统调用题库…

在线更换Proxmox VE超融合集群Ceph OSD磁盘

因为资源紧张的原因&#xff0c;担心一旦关机&#xff0c;虚拟机因为没有空闲的资源而被冻结&#xff0c;以致于不能漂移&#xff0c;导致部分服务停止&#xff0c;只好让机房帮忙热插拔。 幸运的是&#xff0c;插上去能够被系统所识别&#xff08;/dev/sdf就是新插入的硬盘&am…

MIT 6.824 练习1

Hi, there! 这是一份根据 MIT 6.824(2021) 课程的第 2 课的课堂示例代码改编的 2 个 go 语言编程练习。像其他的编程作业一样&#xff0c;我去除了核心部分&#xff0c;保留了代码框架&#xff0c;并编写了每一步的提示 练习代码在本文的最后面 爬虫 在第一部分&#xff0c;…

Postgresql中PL/pgSQL的游标、自定义函数、存储过程的使用

场景 Postgresql中PL/pgSQL代码块的语法与使用-声明与赋值、IF语句、CASE语句、循环语句&#xff1a; Postgresql中PL/pgSQL代码块的语法与使用-声明与赋值、IF语句、CASE语句、循环语句-CSDN博客 上面讲了基本语法&#xff0c;下面记录游标、自定义函数、存储过程的使用。 …

基于Antd4 和React-hooks的项目开发

基于Antd4 和React-hooks的项目开发 https://github.com/dL-hx/react-cnode 项目依赖使用 react 16.13react-redux 7.xreact-router-dom 5.xredux 4.xantd 4axiosmoment 2.24 (日期格式化)qs 项目视图说明 首页主题详情用户列表用户详情关于 配置按需加载 https://3x.an…