学生方阵
标题:学生方阵 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限
学校组织活动,将学生排成一个矩形方阵。请在矩形方阵中找到最大的位置相连的男生数量。这个相连位置在一个直线上,方向可以是水平的、垂直的、呈对角线的或者反对角线的。
注:学生个数不会超过10000.
m , n = map(int, input().split(','))
M = []
for i in range(m):
M.append([1 if i == 'M' else 0 for i in input().split(',')])
dp = [[[0] * 4 for _ in range(n + 2)] for _ in range(m + 2)]
ans = 0
for i in range(1, m + 1):
for j in range(1, n + 1):
if M[i - 1][j - 1] == 1:
dp[i][j][0] = dp[i - 1][j][0] + 1
dp[i][j][1] = dp[i][j - 1][1] + 1
dp[i][j][2] = dp[i - 1][j - 1][2] + 1
dp[i][j][3] = dp[i - 1][j + 1][3] + 1
ans = max(ans, max(dp[i][j]))
print(ans)
查看9道真题和解析