华为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四种语言的解法。