21.可以组成网络的服务器--经典--OD

文章讲述了在一个用n*m整数矩阵表示的机房服务器位置中,如何利用find和main函数来统计最大局域网所能包含的服务器数量,当两台服务器在同一行或相邻列时构成局域网。
摘要由CSDN通过智能技术生成
# 在一个机房中,服务器的位置标识在n*m的整数矩阵网络中,1表示单元格上有服务器,0表示没有。
# 如果两台服务器位于同一行或者用一列中相邻的位置,则认为他们之间可以组成局域网
# 请你统计机房中最大的局域网包含的服务器个数
# 输入描述
# 第一行输入两个正整数,n和m,0<n,m<=100
# 之后为n*m的二维数组,代表服务器信息
# 输出:最大局域网包含的服务器个数
# 输入:
# 2 2
# 1 0
# 1 1
# 输出:3
#


def find(input, i, j):
    count = 0
    stk = [(i, j)]

    while stk:
        x, y = stk.pop()

        if x < 0 or x >= len(input) or y < 0 or y >= len(input[0]) or input[x][y] == 0:
            continue

        input[x][y] = 0
        count += 1

        stk.append((x + 1, y))
        stk.append((x - 1, y))
        stk.append((x, y + 1))
        stk.append((x, y - 1))

    return count


def main():
    n, m = 2, 2
    input = [[1, 0], [1, 1]]

    max_res = 0
    for i in range(n):
        for j in range(m):
            if input[i][j] == 1:
                max_res = max(max_res, find(input, i, j))

    print(max_res)


if __name__ == "__main__":
    main()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值