【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 局域网中的服务器个数(200分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员

✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解

💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导

👏 感谢大家的订阅➕ 和 喜欢💗

📎在线评测链接

https://app5938.acapp.acwing.com.cn/contest/2/problem/OD1074

🌍 评测功能需要 ⇒ 订阅专栏 ⇐ 后私信联系清隆解锁~

🍓OJ题目截图

在这里插入图片描述

文章目录

    • 📎在线评测链接
    • 🍓OJ题目截图
    • ☕️ 局域网中的服务器个数
      • 题目描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 样例解释
      • 数据范围
      • 题解
      • 参考代码

☕️ 局域网中的服务器个数

题目描述

在一个机房中,服务器的位置标识在 n ∗ m n*m nm 的整数矩阵网格中,1 表示单元格上有服务器,0 表示没有。如果两台服务器位于同一行或者同一列中紧邻的位置,则认为它们之间可以组成一个局域网。请你统计机房中最大的局域网包含的服务器个数。

输入格式

第一行输入两个正整数 n n n m m m 1 ≤ n , m ≤ 100 1 \le n,m \le 100 1n,m100
接下来为 n ∗ m n*m nm 的二维数组,代表服务器信息。

输出格式

输出最大局域网包含的服务器个数。

样例输入

2 2
1 0
1 1

样例输出

3

样例解释

矩阵的第 0 列和第 1 行包含了三台服务器,它们相互连接,可以组成局域网。

数据范围

  • 1 ≤ n , m ≤ 100 1 \le n,m \le 100 1n,m100
  • 矩阵中的值为 0 或 1

题解

题目要求找到最大的局域网,并输出其中包含的服务器个数。我们可以使用深度优先搜索(DFS)来遍历矩阵,寻找所有连接的服务器。

具体步骤如下:

  1. 初始化:定义一个二维数组 vis 来标记访问状态,定义变量 ans 来存储最大局域网的服务器个数。
  2. 定义方向数组:用 sxsy 来表示上下左右四个方向。
  3. 深度优先搜索(DFS):编写 dfs 函数,通过递归遍历所有相邻的服务器,并记录服务器个数。
  4. 遍历矩阵:对矩阵的每个元素进行遍历,如果当前元素是服务器且未访问过,调用 dfs 函数计算当前局域网的服务器个数,并更新最大局域网的服务器个数。

通过上述步骤,可以找到最大的局域网并输出其包含的服务器个数。

参考代码

  • Python
n, m = map(int, input().split())
matrix = [list(map(int, input().split())) for _ in range(n)]
visited = [[0] * m for _ in range(n)]
max_servers = 0
dx = [0, 0, 1, -1]
dy = [1, -1, 0, 0]def dfs(x, y):count = 1stack = [(x, y)]while stack:cx, cy = stack.pop()for i in range(4):nx, ny = cx + dx[i], cy + dy[i]if 0 <= nx < n and 0 <= ny < m and not visited[nx][ny] and matrix[nx][ny] == 1:visited[nx][ny] = 1count += 1stack.append((nx, ny))return countfor i in range(n):for j in range(m):if matrix[i][j] == 1 and not visited[i][j]:visited[i][j] = 1max_servers = max(max_servers, dfs(i, j))print(max_servers)
  • Java
import java.util.*;public class Main {static int[] dx = {0, 0, 1, -1};static int[] dy = {1, -1, 0, 0};static int n, m;static int[][] matrix;static boolean[][] visited;public static void main(String[] args) {Scanner sc = new Scanner(System.in);n = sc.nextInt();m = sc.nextInt();matrix = new int[n][m];visited = new boolean[n][m];for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {matrix[i][j] = sc.nextInt();}}int maxServers = 0;for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {if (matrix[i][j] == 1 && !visited[i][j]) {maxServers = Math.max(maxServers, dfs(i, j));}}}System.out.println(maxServers);}static int dfs(int x, int y) {int count = 1;Stack<int[]> stack = new Stack<>();stack.push(new int[]{x, y});visited[x][y] = true;while (!stack.isEmpty()) {int[] current = stack.pop();int cx = current[0];int cy = current[1];for (int i = 0; i < 4; i++) {int nx = cx + dx[i];int ny = cy + dy[i];if (nx >= 0 && nx < n && ny >= 0 && ny < m && !visited[nx][ny] && matrix[nx][ny] == 1) {stack.push(new int[]{nx, ny});visited[nx][ny] = true;count++;}}}return count;}
}
  • Cpp
#include <iostream>
#include <vector>
#include <stack>
using namespace std;int n, m;
vector<vector<int>> matrix;
vector<vector<bool>> visited;
int dx[4] = {0, 0, 1, -1};
int dy[4] = {1, -1, 0, 0};int dfs(int x, int y) {int count = 1;stack<pair<int, int>> s;s.push({x, y});visited[x][y] = true;while (!s.empty()) {int cx = s.top().first;int cy = s.top().second;s.pop();for (int i = 0; i < 4; ++i) {int nx = cx + dx[i];int ny = cy + dy[i];if (nx >= 0 && nx < n && ny >= 0 && ny < m && !visited[nx][ny] && matrix[nx][ny] == 1) {s.push({nx, ny});visited[nx][ny] = true;count++;}}}return count;
}int main() {cin >> n >> m;matrix.resize(n, vector<int>(m));visited.resize(n, vector<bool>(m, false));for (int i = 0; i < n; ++i) {for (int j = 0; j < m; ++j) {cin >> matrix[i][j];}}int maxServers = 0;for (int i = 0; i < n; ++i) {for (int j = 0; j < m; ++j) {if (matrix[i][j] == 1 && !visited[i][j]) {maxServers = max(maxServers, dfs(i, j));}}}cout << maxServers << endl;return 0;
}

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

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

相关文章

keepalived高可用,nginx+keepalived+apache架构的实现

目 录 一、概述&#xff1a; 二、实验架构图如图所示&#xff1a; 三、实验环境&#xff1a; 四、实现效果&#xff1a; 五、实验解析及步骤&#xff1a; 六、具体实现&#xff1a; 6.1 先关闭防火墙和核心防护&#xff1a;两条命令&#xff1a; 6.2 后端apache服务…

头歌资源库(16)分苹果

一、 问题描述 二、算法思想 首先&#xff0c;我们可以初始化一个数组apple来记录每个孩子分配的苹果数量&#xff0c;将所有元素初始化为1&#xff0c;表示每个孩子至少分配到一个苹果。 然后&#xff0c;从左到右遍历评分数组ratings&#xff0c;判断当前孩子的评分与前一个…

文件操作<C语言>

导言 平时我们在写程序时&#xff0c;在运行时申请内存空间&#xff0c;运行完时内存空间被收回&#xff0c;如果想要持久化的保存&#xff0c;我们就可以使用文件&#xff0c;所以下文将要介绍一些在程序中完成一些文件操作。 目录 导言 文件流 文件指针 文件的打开与关闭 …

Android进程间通信 Messenger详解

//这里服务端Service是运行在单独的进程中的 android:process“:other” class MessengerService : Service() { private lateinit var mMessenger: Messenger override fun onBind(intent: Intent): IBinder { log(TAG, “onBind~”) //传入Handler实例化Messenger mMes…

Golang | Leetcode Golang题解之第174题地下城游戏

题目&#xff1a; 题解&#xff1a; func calculateMinimumHP(dungeon [][]int) int {n, m : len(dungeon), len(dungeon[0])dp : make([][]int, n 1)for i : 0; i < len(dp); i {dp[i] make([]int, m 1)for j : 0; j < len(dp[i]); j {dp[i][j] math.MaxInt32}}dp[…

mysql数据库切换成kingbase(人大金仓)数据库时遇到的字段不存在问题

一、问题描述 mysql数据库切换成国产数据库人大金仓&#xff08;kingbase&#xff09;数据库的遇到的字段不存在的问题,根本原因其实是没有找到相对应的表&#xff0c;报错示例如下图所示&#xff1a; 二、问题解决 1、如果所有的表都发生上述的错误&#xff0c;kingbase的…

基于matlab的不同边缘检测算子的边缘检测

1 原理 1.1 边缘检测概述 边缘检测是图像处理和计算机视觉中的基本问题&#xff0c;其目的在于标识数字图像中亮度变化明显的点。这些变化通常反映了图像属性的重要事件和变化&#xff0c;如深度不连续、表面方向不连续、物质属性变化和场景照明变化等。边缘检测在特征提取中…

OSPF 2类LSA详解

概述 上图为2类LSA : Network LSA 的报文格式 , 我们重点关注3个报文字段即可 , 其他内容没有实际的信息 Link State ID : DR的接口IP地址 Network Mask : 该MA网络的掩码 Attached Router : 连接在该MA网络的所有路由器的Router ID 2类LSA一定是DR产生的 , 关于OSPF DR的细节…

数据结构之二叉树的超详细讲解(3)--(二叉树的遍历和操作)

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 数据结构之二叉树的超详细讲解(3)--(二叉树链式结构的实现) 收录于专栏【数据结构初阶】 本专栏旨在分享学习数据结构学习的一点学习笔记&#xff0c;欢迎大家在…

展讯-QMI8658和气压传感器驱动调试

1.调试QMI8658 参考demo&#xff0c;添加QMI8610相关内容 当前驱动路径位于&#xff1a;bsp/modules/input/misc/qmi8610/qmi8610.c 编译使用make sockoimage 用fastboot烧录 1.确定驱动被正常加载 代码添加之后&#xff0c;首先确定有没有进入当前驱动文件 dmesg |grep …

如何用GO语言实现冒泡排序算法?

本章教程,介绍一下如何用GO语言实现基础排序算法中的冒泡排序。 一、程序代码 package mainimport ("fmt""math/rand""time" )// bubbleSort 函数实现冒泡排序算法 func bubbleSort(arr []int) {n

32 - 判断三角形(高频 SQL 50 题基础版)

32 - 判断三角形 select *,if(xy>z and xz>y and zy > x,Yes,No) triangle fromTriangle;

Day9 —— 大数据技术之ZooKeeper

ZooKeeper快速入门系列 ZooKeeper的概述什么是ZooKeeper&#xff1f;ZooKeeper的特点和功能使用ZooKeeper的原因 ZooKeeper数据模型ZooKeeper安装ZooKeeper配置ZooKeeper命令行操作常见服务端命令 ZooKeeper的概述 什么是ZooKeeper&#xff1f; ZooKeeper是一个开源的分布式协…

jarvisoj_level2

首先检查checksec 可以看见no canary found 说明可能是栈溢出 运行一下程序 随便输一个,得到hello world(感觉这一步好像没啥用,没有RE那用) IDA 32 打开 后门 漏洞点 buf: 代码思路:利用溢出,把buf填满,然后构造程序,得到获取shell的目的 exp来自 BUUCTF—jarvisoj_level…

【Qt】学习Day1

文章目录 Qt简介创建第一个Qt程序创建过程介绍main函数工程文件头文件控件源文件快捷键按钮控件常用API对象树坐标系 信号和槽自定义信号自定义槽函数触发自定义的信号案例-下课后&#xff0c;老师触发饿了信号&#xff0c;学生响应信号&#xff0c;请客吃饭重载信号连接信号La…

Paxos分布式共识算法

Paxos分布式共识算法 一、简介 Paxos算法是由莱斯利兰伯特(Leslie Lamport)于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法。它主要用于解决分布式系统中如何就某个值达成一致&#xff0c;并保证整个系统的一致性&#xff0c;即使在部分节点发生故障的情况下…

论文浅尝 | 基于生成模型的多模态实体链接

笔记整理&#xff1a;郭凌冰&#xff0c;浙江大学博士&#xff0c;研究方向为知识图谱 链接&#xff1a;https://arxiv.org/abs/2306.12725 1. 动机 多模态实体链接&#xff08;Multimodal Entity Linking&#xff0c;MEL&#xff09;旨在将带有多模态上下文的提及映射到知识库…

[SAP ABAP] 运算符

1.算数运算符 算术运算符描述加法-减法*乘法/除法MOD取余 示例1 输出结果: 输出结果: 2.比较运算符 比较运算符描述示例 等于 A B A EQ B <> 不等于 A <> B A NE B >大于 A > B A GT B <小于 A < B A LT B >大于或等于 A > B A GE B <小…

keep-alive实现页面缓存

<!--router-view 实现页面缓存--> <router-view v-slot"{Component}"><keep-alive :max"8"><component :is"Component"></component></keep-alive> </router-view>

2024年6月23日 十二生肖 今日运势

小运播报&#xff1a;2024年6月23日&#xff0c;星期日&#xff0c;农历五月十八 &#xff08;甲辰年庚午月戊午日&#xff09;&#xff0c;法定节假日。今天国际奥林匹克日&#xff0c;坚不可摧的意志&#xff0c;披荆斩棘的豪情&#xff0c;永远值得拥有&#xff01; 红榜生…