华为OD机试真题目录:真题目录
本文章提供java、python、c++、jsNode四种代码
题目描述
学校组织活动,将学生排成一个矩形方阵
请在矩形方阵中找到最大的位置相连的男生数量
这个相连位置在一个直线上,方向可以是水平的,垂直的,成对角线的或者呈反对角线的。注: 学生个数不会超过10000
输入描述
输入的第一行为 矩阵的行数和列数,接下来的n行为矩阵元素,元素间用”,”分隔.
输出描述
输出一个整数,表示矩阵中最长的位置相连的男生个数
示例1 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
3,4
F,M,M,F
F,M,M,F
F,F,F,M输出
3
思路:
类似于动态规划思路。最小子数组的思路
比如考虑横线,dp[i][j]表示当前点的左边连续M数
如果当前是M,就是dp[i][j]=dp[i][j-1]+1
否则dp[i][j]=0(初始化就是0,所以不用再写)
一次遍历将横线,竖线,正对角线情况最大,第二次遍历找出反对角线情况的最大