华为OD机试 - 服务器广播 - 矩阵(Java 2024 C卷 200分)

news/2024/7/20 17:31:12 标签: 华为od, 服务器, 矩阵, 七日集训, 程序人生

在这里插入图片描述

目录

    • 专栏导读
    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
      • 1、输入
      • 2、输出
      • 3、说明
    • 四、Java算法源码
    • 六、效果展示
      • 1、输入
      • 2、输出
      • 3、说明

华为OD机试 2024C卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷+C卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

服务器连接方式包括直接相连,间接连接。A 和 B 直接连接,B 和 C 直接连接,则 A 和 C 间接连接。直接连接和间接连接都可以发送广播。

给出一个 N * N 数组,代表 N 个服务器,matrix[i][j] == 1,则代表 i 和 j 直接连接;不等于 1 时,代表 i 和 j 不直接连接。
matrix[i][i] == 1,即自己和自己直接连接。matrix[i][j] == matrix[j][i]。

计算初始需要给几台服务器广播,才可以使每个服务器都收到广播。

二、输入描述

输入描述输入为 N 行,每行有 N 个数字,为 0 或 1,由空格分隔,构成 N * N 的数组,N 的范围为 1 <= N <= 50。

三、输出描述

输出一个数字,为需要广播的服务器数量。

1、输入

1 0 0
0 1 0
0 0 1

2、输出

3

3、说明

3 台服务器相互不连接,所以需要分别广播这 3 台服务器

四、Java算法源码

public class OdTest {
    /**
     * 1 0 0
     * 0 1 0
     * 0 0 1
     * <p>
     * 3
     *
     *  == 1,即自己和自己直接连接。
     *  != 1,不连接
     *
     * 输出一个数字,为需要广播的服务器数量。
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] lineArr = sc.nextLine().split(" ");
        int N = lineArr.length;
        // 输入的矩阵
        int[][] matrix = new int[N][N];
        for (int i = 1; i < N; i++) {
            lineArr = sc.nextLine().split(" ");
            int[] tempArr = new int[N];
            for (int j = 0; j < N; j++) {
                tempArr[j] = Integer.parseInt(lineArr[j]);
            }
            matrix[i] = tempArr;
        }

        Set<Integer> usedSet = new HashSet<Integer>();
        List<Set<Integer>> connectionList = new ArrayList<Set<Integer>>();
        for (int i = 0; i < matrix.length; i++) {
            if (usedSet.contains(i)) {
                continue;
            }
            Set<Integer> newConnectionSet = new HashSet<Integer>();
            usedSet.add(i);
            newConnectionSet.add(i);
            initConnectionSet(i, usedSet, newConnectionSet, matrix);
            connectionList.add(newConnectionSet);
        }
        System.out.println(connectionList.size());
    }

    private static void initConnectionSet(int idx, Set<Integer> usedSet, Set<Integer> newConnectionSet, int matrix[][]) {
        for (int i = 0; i < matrix.length; i++) {
            if (i == idx) {
                continue;
            }
            int idxCheck = matrix[idx][i];
            if (usedSet.contains(i) || idxCheck == 0) {
                continue;
            }

            usedSet.add(i);
            newConnectionSet.add(i);
            initConnectionSet(i, usedSet, newConnectionSet, matrix);
        }
    }
}

六、效果展示

1、输入

1 0 0
0 1 0
0 0 1

2、输出

3

3、说明

在这里插入图片描述


🏆下一篇:华为OD机试 - 最长的顺子 - 感谢@禁止你发言提供的更简便算法(Java 2023 B卷 200分)

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷+C卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述


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

相关文章

设计模式 — — 单例模式

一、是什么 单例模式只会在全局作用域下创建一次实例对象&#xff0c;让所有需要调用的地方都共享这一单例对象 二、实现 // 单例构造函数 function CreateSingleton (name) {this.name name;this.getName(); };// 获取实例的名字 CreateSingleton.prototype.getName func…

如何依赖机器人安装极狐GitLab

本文作者&#xff1a;徐晓伟 GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 极狐GitLab 依赖机器人 dependabo…

傅立叶之美:深入研究傅里叶分析背后的原理和数学

一、说明 T傅里叶级数及其伴随的推导是数学在现实世界中最迷人的应用之一。我一直主张通过理解数学来理解我们周围的世界。从使用线性代数设计神经网络&#xff0c;从混沌理论理解太阳系&#xff0c;到弦理论理解宇宙的基本组成部分&#xff0c;数学无处不在。 当然&#xff0c…

静态路由--添加路由表,实现非直连网段的通信

建立拓扑&#xff1a; 路由器**只有直连网段的路由表,而对非直连并不拥有,因此要在路由器的路由表中手动添加非直连网段的路由. ** 也就是说对于AR2来说&#xff0c;**网段192.168.10.0**和**网段192.168.40.0**是他的直连网段。进一步说这两个网端的设备可以相互通信而网段19…

Window部署Oracle并实现公网环境远程访问本地数据库

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 前言 Oracle&#xff0c;是甲骨文公司的一款关系…

基于FPGA的PSRAM接口设计与实现

该系列为神经网络硬件加速器应用中涉及的模块接口部分&#xff0c;随手记录&#xff0c;以免时间久了遗忘。 一 PSRAM与HyperRAM 1、概述 2、异同 接口协议不同&#xff0c;因此在IP设计时需要注意。 Hyperram(Winbond)&#xff1a;HyperBus协议 PSRAM(AP公司)&#xff1a;X…

sqllab第十三关通关笔记

知识点&#xff1a; 登录框处常见的语句(一般都是查询语句) where usernamewhere username""where usernam()where username("")错误注入知识回顾这里使用错误注入 通过admin admin登录发现没有任何回显信息&#xff1b;但是有成功登录的提示 通过bp抓包…

LeetCode-213题:打家劫舍II(原创)

【题目描述】 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋&#xff0c;每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 &#xff0c;这意味着第一个房屋和最后一个房屋是紧挨着的。同时&#xff0c;相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻…