华为OD机试统一考试D卷C卷 - 可以组成网络的服务器
题目描述
在一个机房中,服务器的位置标识在 n*m 的整数矩阵网格中,1 表示单元格上有服务器,0 表示没有。如果两台服务器位于同一行或者同一列中紧邻的位置,则认为它们之间可以组成一个局域网。
请你统计机房中最大的局域网包含的服务器个数。
输入描述
第一行输入两个正整数,n和m,0<n,m<=100
之后为n*m的二维数组,代表服务器信息
输出描述
最大局域网包含的服务器个数。
用例1
输入
2 2
1 0
1 1
输出
3
[0][0]、[1][0]、[1][1]三台服务器相互连接,可以组成局域网
Java
import java.util.Scanner;
public class Main {
static int n, m;
static int[][] server; // 定义一个矩阵,用于存储服务器的状态
static boolean[][] visited; // 记录每个位置是否已经被访问过
// 定义一个深度优先搜索函数,用于搜索当前位置的连通块大小
public static int dfs(int i, int j) {
// 如果当前位置超出矩阵边界或者当前位置没有服务器,则返回0
if (i < 0 || i >= n || j < 0 || j >= m || server[i][j] == 0) {
return 0;
}
// 如果当前位置已经被访问过,则返回0
if (visited[i][j]) {
return 0;
}
// 标记当前位置为已访问
visited[i][j]
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
机试E卷D卷刷题日记 文章被收录于专栏
机试刷题记录