《字节跳动》笔试第一题

题目描述:在[m,n]的矩阵中,用1表示有人,0表示没人。假如两个人的位置相邻(包括斜着相邻,水平相邻,垂直相邻),则他们是属于一个团体。

输入:

第一行输入两个数m,n,用,隔开

接下来输入m行,每一行输入n个数,用逗号隔开

输出:

矩阵中有多少个团体,以及最大团体的人数。

例如:

输出6,11(程序没有管输出的格式,自己可以修改)

import sys
global r
r = []
global r1
r1 = 0

def judge(a, x, y):
    if a[x][y] == 1:
        global r1
        r1 = r1 + 1
        a[x][y] = -1
        return True
    else:
        return False


def move(a, x, y, m, n):
    if  x < 0 or y < 0 or x >= m or y >= n or a[x][y] != 1:
        return
    else:
        if judge(a, x, y):
            move(a, x, y + 1, m, n)
            move(a, x, y - 1, m, n)
            move(a, x + 1, y, m, n)
            move(a, x - 1, y, m, n)
            move(a, x - 1, y - 1, m, n)
            move(a, x - 1, y + 1, m, n)
            move(a, x + 1, y + 1, m, n)
            move(a, x + 1, y - 1, m, n)


if __name__ == '__main__':
    d = sys.stdin.readline().strip().split(',')
    m = int(d[0])
    n = int(d[1])
    a = []
    for i in range(0, m):
        b = sys.stdin.readline().strip().split(',')
        b = map(int, b)
        a.append(b)

    c = 0
    for i in range(0, m):
        for j in range(0, n):
            if a[i][j] == 1:
                r1 = 0
                c = c + 1
                move(a, i, j, m, n)
                r.append(r1)
                r1 = 0
    print c
    print r

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT远征军

谢谢各位鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值