首页 > 编程语言 >华为od机考_精准核酸检测_Java(深度优先搜索)

华为od机考_精准核酸检测_Java(深度优先搜索)

时间:2024-06-02 13:32:47浏览次数:14  
标签:确诊 Java matrix confirmedCasesSet 检测 od 机考 核酸 result

华为od机考_精准核酸检测_Java

题目

为了达到新冠疫情精准防控的需要,为了避免全员核酸检测带来的浪费,需要精准還定可能被感染的人群。 现在根据传染病流调以及大数据分析,得到了每个人之间在时间、空间上是否存在轨迹的交叉。 现在给定一组确诊人员编号(X1,X2,X3,…Xn),在所有人当中,找出哪些人需要进行核酸检测,输出需要进行核酸检测的人数。(注意:确诊病例自身不需要再做核酸检测) 需要进行核酸检测的人,是病毒传擂链条上的所有人员,即有可能通过确诊病例所能传强到的所有人。

例如:A是确诊病例,A和B有接触、B和C有接館、C和D有接触、D和E有接鯰,那么BICIDE都是需要进行核酸检测的人。

输入描述: 第一行为总人效N 第二行为确诊病例人员網号(确诊病例人员效量<N),用逗号分司 第三行开始,为一个N”N的矩阵,表示每个人员之间是否有接触,0表示没有接触,1豪示有捞触。

输出描述: 整效:高要做核酸检测的人数 备注: 人员编号从0开始 0<N<100

示例1

输入

5
1,2
1,1,0,1,0
1,1,0,0,0
0,0,1,0,1
1,0,0,1,0
0,0,1,0,1

输出

3

说明

编号为1、2号的人员,为确诊病例。

  1. 号与0号有接触,0号与3号有接触。
  2. 号与4号有接触。

所以,需要做核酸检测的人是0号、3号、4号,总计3人需要进行核酸检测。

代码

public class Test6 {
    //图的深度优先搜索dfs
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();//总人数
        input.nextLine();
        String[] confirmedCasesStrings = input.nextLine().split(","); //确诊病例
        Set<Integer> confirmedCasesSet = new HashSet<Integer>();//确诊病例set
        for(String c : confirmedCasesStrings){
            confirmedCasesSet.add(Integer.parseInt(c));
        }
        int[][] matrix = new int[n][n]; //存放人员关联矩阵
        for(int i =0; i<n; i++){
            String[] s1 = input.nextLine().split(",");
            for(int j = 0; j < n; j++){
                matrix[i][j] = Integer.parseInt(s1[j]);
            }
        }

        boolean[] visied = new boolean[n];//记录已遍历人员,防止重复遍历
        Set<Integer> result = new HashSet<>();//存放需要做核酸的人员
        // 深度优先遍历每一个确诊人员
        for(Integer g: confirmedCasesSet){
            dfs(matrix, g, visied, confirmedCasesSet, result);
        }
        System.out.println(result.size());
    }
    // 深度优先遍历
    public static void dfs(int[][] matrix, Integer person, boolean[] visied, Set<Integer> confirmedCasesSet, Set<Integer> result){
        visied[person] = true;
        for(int i = 0; i < matrix.length; i++) {
            if(matrix[person][i] == 1 && !visied[i] && !confirmedCasesSet.contains(i)){
                result.add(i);
                dfs(matrix, i, visied, confirmedCasesSet, result);
            }
        }
    }
}

标签:确诊,Java,matrix,confirmedCasesSet,检测,od,机考,核酸,result
From: https://blog.csdn.net/qq_42631788/article/details/139390276

相关文章

  • JAVA计算机毕业设计基于Vue学生选课管理系统(附源码+springboot+开题+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在现代高等教育体系中,学生选课管理是一项复杂且至关重要的工作。随着学生人数的不断增加和课程种类的日益丰富,传统的手工选课管理方式已经无法满足高......
  • JAVA计算机毕业设计基于vue图书馆选座系统设计与实现(附源码+springboot+开题+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着高校图书馆的日益繁忙和学生对学习环境需求的提高,图书馆座位管理成为了一个亟待解决的问题。传统的图书馆座位管理方式往往存在效率低下、资源浪......
  • [leetcode 第 400 场周赛]题解
    第一题:classSolution{publicintminimumChairs(Strings){intx=0;intans=0;for(inti=0;i<s.length();i++){if(s.charAt(i)=='E'){x--;if(x<0){ans++;x=0;......
  • 毕业设计-基于Java 和 Mysql 实现的宿舍管理系统
    毕业设计-基于Java和Mysql实现的宿舍管理系统    学生宿舍管理系统,是基于Java,数据库是mysql数据库。本地已调试好,可以直接部署使用。    功能还是比较丰富的,包含了学生、班级、宿舍、卫生、访客等内容的添加、删除、导出;用户还分管理员和普通用户。主要实......
  • Java 线程诊断实战-全面解锁线程转储分析技巧
    大家好!今天,我将为大家带来一个非常实用的主题——如何高效诊断和分析Java线程问题。无论是死锁、线程阻塞,还是资源耗尽等情况,都可能会给线上系统带来严重的影响。而恰当地使用线程转储(ThreadDump)工具无疑是定位和解决问题的重要一环。让我们一同来学习和掌握相关的......
  • 大学生HTML期末大作业——HTML+CSS+JavaScript公司网站(自行车)
    HTML+CSS+JS【公司网站】网页设计期末课程大作业web前端开发技术web课程设计网页规划与设计......
  • 数组的降序排序(Java)
    代码:importjava.util.*;publicclasssz{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);//定义数组长度System.out.println("请输入数组的长度:");intlength=scanner.nextInt();......
  • LCS算法 java
    最优子结构(OptimalSubstructure)最优子结构性质是指问题的最优解可以由其子问题的最优解构造而成。换句话说,如果一个问题可以分解成若干子问题,并且这些子问题的最优解能够组合成原问题的最优解,那么这个问题就具有最优子结构性质。最长公共子序列(LCS)最长公共子序列问题是一个......
  • JAVA基础|多线程
    什么是线程?线程(Thread)是一个程序内部的一条执行流程。多线程是什么?多线程是指从软硬件上实现的多条执行流程的技术(多条线程由CPU负责调度执行)一.如何在程序中创建出多条线程?Java是通过java.lang.Thread类的对象来代表线程的。1.多线程的创建方式一:继承Thread类定义一......
  • Large Language Models are Zero-Shot Rankers for Recommender Systems论文阅读笔记
    LargeLanguageModelsareZero-ShotRankersforRecommenderSystems论文阅读笔记Abstract​ 本工作旨在调查作为推荐系统的排名模型的LLM的能力。我们首先将推荐问题形式化为一个条件排序任务,将顺序交互历史作为条件,并将其他候选生成模型检索到的项目作为候选项。为了解决LL......