华为OD统一考试 - 可以组成网络的服务器

题目描述

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

请你统计机房中最大的局域网包含的服务器个数。

输入描述

第一行输入两个正整数,n和m,0<n,m<=100

之后为n*m的二维数组,代表服务器信息

输出描述

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

用例

输入

2 2

1 0

1 1

输出

3

说明

[0][0]、[1][0]、[1][1]三台服务器相互连接,可以组成局域网

题目解析

本题可以用深度优先搜索DFS求解。

我们找到一个服务器后,就再去其上下左右找下一个服务器,当找到新服务器,再递归去找其上下左右,按此逻辑,就像拔地瓜藤一样,一下子把所有地瓜都拔出来。而这就是深度优先搜索,即dfs。

为了避免重复统计,我们将统计过的服务器位置的值从1变为0。

import Foundation
func ODTest_2_51() {
    print("输入描述")
    print("第一行输入两个正整数,n和m,0<n,m<=100")
    let nm = (readLine() ?? "").split(separator: " ").map { Int($0) ?? 0 }
    if nm.count != 2 {
        print("0")
        return
    }
    let n = nm[0], m = nm[1]
    print("之后为n*m的二维数组,代表服务器信息")
    print("第二行开始,是M行N列的像素的二维数组,仅包含像素1和5")
    var matrix = Array(repeating: Array(repeating: 0, count: m), count: n)
    for i in 0 ..< n {
        matrix[i] = (readLine() ?? "").

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2024华为OD机试卷题 文章被收录于专栏

本专栏给大家提供了华为2024最新华为OD 题目汇总。华为OD机试刷题记录机考算法题库,帮助你上岸华为。提供C++/Java、JavaScript、Python四种语言的解法。

全部评论

相关推荐

Noel_:中石油是这样的 哥们侥幸混进免笔试名单 一看给我吓尿了
点赞 评论 收藏
分享
09-25 10:34
东北大学 Java
多面手的小八想要自然醒:所以读这么多年到头来成为时代车轮底下的一粒尘
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务