华为OD机试 - 最大相连男生数(Python)| 真题+思路+代码

这篇博客介绍了华为OD机试中的一道题目——求最大相连男生数。题目要求在矩形方阵中找出最长的位置相连的男生序列,可以按行、列、对角线或反对角线方向。博主提供了输入输出示例,解题思路,核心知识点以及Python代码实现,代码经过运行验证。博客强调理解题意是解题关键,同时分享了全网热门的爬虫学习资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最大相连男生数

题目

学校组织活动,将学生排成一个矩形方阵。
请在矩形方阵中找到最大的位置相连的男生数量。
这个相连位置在一个直线上,方向可以是水平的、垂直的、成对角线的或者反对角线的。
注:学生个数不会超过 10000。

输入

输入的第一行为矩阵的行数和列数,接下来的 n 行为矩阵元素,元素间用 , 分隔。

输出描述

输出一个整数,表示矩阵中最长的位置相连的男生个数。

示例一

输入

3,4
F,M,M,F
F,M,M,F
F,F,F,M

输出

3

解题思路

solve_method() 函数中,通过两层循环遍历每个位置,再通过循环对每个位置的四个方向调用 find() 函数;

find 函数中,通过 while 循环搜索该位置与下一个位置是否是 “M”,如果是,计数器 +1;如果不是,将 max_len 更新为计数器的最大值并重置计数器为 0;

核心知识点

重点是理解题意,解法不难。

Python 代码实现

def solve_method(n, m, matrix):
    actions = [[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

梦想橡皮擦

如有帮助,来瓶可乐

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

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

打赏作者

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

抵扣说明:

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

余额充值