【华为OD机试B卷】服务器广播、需要广播的服务器数量(C++/Java/Python)

题目

题目描述

服务器连接方式包括直接相连,间接连接。

AB直接连接,BC直接连接,则AC间接连接。

直接连接和间接连接都可以发送广播。

给出一个N*N数组,代表N个服务器,

matrix[i][j] == 1
则代表ij直接连接;不等于 1 时,代表ij不直接连接。

matrix[i][i] == 1

即自己和自己直接连接。matrix[i][j] == matrix[j][i]

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

输入

输入为N行,每行有N个数字,为01,由空格分隔,

构成N*N的数组,N的范围为 1 <= N <= 40

输出

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

用例一

输入

1 0 0
0 1 0
0 0 1

输出

3

说明

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

用例二

输入

1 1
1 1

输出

1

说明

2 台服务器相互连接,所以只需要广播其中一台服务器

实现代码

C++
#include <iostream>
#include <vector>
using namespace std;int count = 0;void dfs(vector<vector<int>>& arr, vector<bool>& visited, int index) {visited[index] = true;bool flag = true;for (int i = index + 1; i < arr.size(); i++) {if (arr[index][i] == 1) {flag = false;dfs(arr, visited, i);}}if (flag) {count++;}
}int main() {string input;getline(cin, input);vector<string> str;size_t pos = 0;while ((pos = input.find(" ")) != string::npos) {str.push_back(input.substr(0, pos));input.erase(0, pos + 1);}str.push_back(input);int n = str.size();vector<vector<int>> arr(n, vector<int>(n, 0));for (int i = 0; i < n; i++) {arr[0][i] = stoi(str[i]);}for (int i = 1; i < n; i++) {getline(cin, input);pos = 0;vector<string> s;while ((pos = input.find(" ")) != string::npos) {s.push_back(input.substr(0, pos));input.erase(0, pos + 1);}s.push_back(input);for (int j = 0; j < n; j++) {arr[i][j] = stoi(s[j]);}}vector<bool> visited(n, false);for (int i = 0; i < n; i++) {if (!visited[i]) {dfs(arr, visited, i);}}cout << count << endl;return 0;
}
Java
import java.util.*;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);String[] str = in.nextLine().split(" ");int n = str.length;int[][] arr = new int[n][n];for(int i = 0; i < n; i++) {   arr[0][i] = Integer.parseInt(str[i]);}for(int i = 1; i < n; i++) {   String[] s = in.nextLine().split(" ");for(int j = 0; j < n; j++) {arr[i][j] = Integer.parseInt(s[j]);}}int count = 0;Queue<Integer> queue = new LinkedList<>();for(int i = 0; i < n; i++) {if(!queue.contains(i)) {dfs(arr, queue, i);count++;}}System.out.println(count);}public static void dfs(int[][] arr, Queue<Integer> queue, int index) {queue.offer(index);for (int i = index + 1; i < arr.length; i++) {if (arr[index][i] == 1 && !queue.contains(i)) {dfs(arr, queue, i);}}}
}
Python
import sysdef dfs(arr, visited, index):visited[index] = Trueflag = Truefor i in range(index + 1, len(arr)):if arr[index][i] == 1:flag = Falsedfs(arr, visited, i)if flag:global countcount += 1count = 0
str = input().split(" ")
n = len(str)
arr = [[0]*n for _ in range(n)]
for i in range(n):arr[0][i] = int(str[i])
for i in range(1, n):s = input().split(" ")for j in range(n):arr[i][j] = int(s[j])
visited = [False]*n
for i in range(n):if not visited[i]:dfs(arr, visited, i)
print(count)

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

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

相关文章

C++ 模板:全特化和偏特化

目录 全特化&#xff08;Full Specialization&#xff09; 偏特化&#xff08;Partial Specialization&#xff09; 特点和使用场景 注意事项 在C中&#xff0c;模板特化&#xff08;template specialization&#xff09;是一种强大的功能&#xff0c;允许对模板进行特定情…

2024最新算法:鳗鱼和石斑鱼优化(Eel and grouper optimizer,EGO)算法求解23个函数,MATLAB代码

一、算法介绍 鳗鱼和石斑鱼优化器&#xff08;Eel and grouper optimizer&#xff0c;EGO&#xff09;是2024年提出的一种智能优化算法&#xff0c;EGO算法的灵感来自海洋生态系统中鳗鱼和石斑鱼的共生相互作用和觅食策略。 参考文献&#xff1a; [1]A. Mohammadzadeh, S. Mi…

玩转数据库索引

1、概述 通常我们要对数据库进行优化&#xff0c;主要可以通过以下五种方法。 计算机硬件调优应用程序调优数据库索引优化SQL语句优化事务处理调优 本篇文章将向大家介绍数据库中索引类型和使用场合&#xff0c;本文以SQL Server为例&#xff0c;对于其他技术平台的朋友也是有…

DDL-表操作-数据类型

一.DDL-表操作-数据类型 MySQL中的数据类型有很多,主要分为三类:数值类型,字符串类型,日期类型。 二.关系表 注意: 无符号和有符号的取值范围不是一样的,无符号需要加上UNSIGNED范围。 BLOB&#xff1a;用来描述二进制数据 TEXT:用来描述字符串 三.定长字符串和变长字符串 c…

【STM32入门学习】学习嵌入式实时操作系统(RTOS)移植uc/OS到stm32F103上

目录 一、建立STM32HAL库工程 1.1实时操作系统 1.2基于HAL库创建工程 二、获取uC/OS-III源码 三、移植准备 3.1复制uC/OS-III文件到工程文件夹 3.2添加工程组件和头文件路径 四、移植修改代码 &#xff14;.1.启动文件修改&#xff1a; &#xff14;.2.app_cfg.h &a…

Java Scanner 类

Java Scanner 类 java.util.Scanner 是 Java5 的新特征&#xff0c;我们可以通过 Scanner 类来获取用户的输入。 下面是创建 Scanner 对象的基本语法&#xff1a; Scanner s new Scanner(System.in);接下来我们演示一个最简单的数据输入&#xff0c;并通过 Scanner 类的 nex…

Scala 中yield 关键字

Scala 中yield 关键字 在 Scala 中&#xff0c;yield 关键字通常与 for 循环结合使用&#xff0c;用于生成一个集合&#xff08;通常是 List、Array 等&#xff09;。它的作用是将循环体中的每次迭代产生的值收集起来&#xff0c;并最终返回一个包含这些值的集合。 下面是一个简…

关于FPGA对 DDR4 (MT40A256M16)的读写控制 4

关于FPGA对 DDR4 &#xff08;MT40A256M16&#xff09;的读写控制 4 语言 &#xff1a;Verilg HDL 、VHDL EDA工具&#xff1a;ISE、Vivado、Quartus II 关于FPGA对 DDR4 &#xff08;MT40A256M16&#xff09;的读写控制 4一、引言二、DDR4 SDRAM设备中模式寄存器重要的模式寄存…

background 与img标签加载图片的区别

在HTML和CSS中&#xff0c;通过background属性和img标签都可以加载图片&#xff0c;它们各自有一些优势和劣势&#xff1a; 使用 background 属性加载图片的优势和劣势&#xff1a; 优势&#xff1a; 灵活性&#xff1a; 可以通过CSS的background属性设置背景图片&#xff0…

数组中的逆序对

描述&#xff1a; https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/description/ 思路&#xff1a; 在进行归并排序时&#xff0c;会分成有序的左右两部分&#xff0c;如果左部分出现了大于右部分的数时&#xff08;nums[cur1] > nums[cur2]&#xff09;&…

Javaweb配置tomcat

Tomcat 9版本链接 链接&#xff1a;https://pan.baidu.com/s/1u-eDur5KlqlXM_IM50Ahtg?pwd1njm 提取码&#xff1a;1njm 1、打开idea&#xff0c;创建maven项目 2023版IDEA 2、 目录结构 ps: 如果结果不完整,选中main右键 新建对应的文件夹 3、 web项目设置Tomcat(部署项目…

特征工程与数据预处理全解析:基础技术和代码示例

在机器学习和数据科学的世界里&#xff0c;数据的质量是建模成功与否的关键所在。这就是特征工程和数据预处理发挥作用的地方。本文总结的这些关键步骤可以显著提高模型的性能&#xff0c;获得更准确的预测&#xff0c;我们将深入研究处理异常值、缺失值、编码、特征缩放和特征…

如何阅读一篇学术论文

第一遍 论文的格式实际上常常遵循着固定的结构&#xff0c;这种结构有助于作者整理思路&#xff0c;同时也帮助读者快速定位论文的要点和创新之处。 最常见的错误是拿到一篇论文后立刻开始从头到尾仔细阅读&#xff0c;然后进行详细笔记。这种方法可以全局了解论文的内容&…

我是如何从功能测试转成自动化测试的!

大家好&#xff0c;我是测试君。&#xff08;六哥也行&#xff09; 时间过得好快&#xff0c;不知不觉已经在这个行业摸爬滚打10年多了&#xff0c;也算是测试圈的一枚老兵了。 回想自己在自动化求知路上的种种&#xff0c;依然历历在目&#xff0c;看着自己一步步的走来&#…

剪画小程序:视频文案提取神器:制作爆款视频的第一步!

在这个信息爆炸的时代&#xff0c;视频成为了我们获取知识和娱乐的重要途径。 但有时候&#xff0c;我们想要的不仅仅是观看视频&#xff0c;而是能够将其中精彩的文案提取出来&#xff0c;为自己的创作添砖加瓦。 现在&#xff0c;有一款神奇的工具应运而生&#xff0c;为您…

工作随记-构造调用虚函数

工作随记-构造调用虚函数 代码编译警告原因解决方法示例代码重构示例总结 代码编译警告 Call to virtual method CoordinateConversionTool::Reset during construction bypasses virtual dispatch [clang-analyzer-optin.cplusplus.VirtualCall]这个警告信息来自 Clang 静态分…

Linux-笔记 高级I/O操作

前言 I/O&#xff08;Input/Output&#xff0c;输入/输出&#xff09;是计算机系统中的一个重要组成部分&#xff0c;它是指计算机与 外部世界之间的信息交流过程。I/O 操作是计算机系统中的一种基本操作&#xff0c;用于向外部设备&#xff08;如 硬盘、键盘、鼠标、网络等&am…

https基础概念

目录 1.什么是https 1.1.https概念 1.2.一些术语 2.https如何加密 2.1.使用对称加密 2.2.使用非对称加密 1.什么是https 首先&#xff0c;https不是http的复数形式 1.1.https概念 &#xff08;1&#xff09;产生背景 为什么会出现https&#xff0c;是因为http协议在传…

如何通过有效的跟进,吸引国外客户回复?

相信很多外贸业务员都知道&#xff0c;想要走到最终达成订单成交的那一步&#xff0c;首要前提就是客户愿意和你继续谈。第一次询价就买的这种客户属于刚需&#xff0c;可遇而不可求&#xff0c;大部分的客户都需要通过我们坚持不懈的跟进最后达成交易。 所以如何通过有效的跟…

小白学python(第二天)

哈喽&#xff0c;各位小伙伴们我们又见面了&#xff0c;昨天的文章吸收得如何&#xff1f;可有不懂否&#xff1f;如有不懂可以在品论区留言哦&#xff0c;废话不多说&#xff0c;开始今天的内容。 字符及字符串的续讲 字符&#xff1a;英文字母&#xff0c;阿拉伯数字&#x…