【华为OD机试】-(A卷+B卷+C卷+D卷)-2024真题合集目录
题目描述
在一个机房中,服务器的位置标识在 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]三台服务器相互连接,可以组成局域网 |
用例2
输入 | 3 4 0 1 0 0 |
输出 | 4 |
说明 | [0][0]、[1][0]、[1][1]、[2][1]三台服务器相互连接,可以组成局域网 |
题目解析
本题可以用深度优先搜索DFS求解。
我们找到一个服务器后,就再去其上下左右找下一个服务器,因为从同一个连通块中的任意一台服务器开始搜索,都可以得到相同的连通块。除非是不在同一个连通块中的服务器,因此,我们可以把统计过的服务器位置置0。在进行完一次dfs之后,紧接着去遍历矩阵中的其他为1的位置,也就得到了不同连通块,通过比较得到最大连通块的服务器数量。
代码
c++
#i