招募志愿者
提交数: 7, 通过率: 57.14%, 平均分: 64.29
题目描述:
某活动招募志愿者。将所有报名学生按照身高排成一排,然后从中选出连续的若干个人,使得选出的人中男女人数相等。若 9 位报名学生依次排队后的性别序列为0 1 0 0 0 1 1 0 0(0 代表女生, 1 代表男生),则最长的一段男女生人数相等的子序列长度为 6 。
输入格式:
一行数字,表示性别序列(不超过5000个数字)。
输出格式:
一行一个数字,表示最长的一段男女生人数相等的子序列长度,不存在输出-1。
样例输入:
0 1 0 0 0 1 1 0 0
样例输出:
6
提示:
请完善以下代码:
def solve(n, a):
qzh = [0] * (n + 1)
for i in range(1, n + 1):
if a[i - 1] == 0:
qzh[i] = qzh[i - 1] - 1
else:
qzh[i] =_①_________________
for Lth in range( _②________________ ,1, -2): #枚举子序列长度,长度为偶数
for i in range(n-Lth+1): #枚举子序列起点
if _③__________________ :
return Lth
return -1 # 如果没有找到符合条件的子序列,则返回-1
a = list(map(int, input().split())) # 读取排队后的性别序列为 a
n = len(a) # 人数 n
print(solve(n,a))
时间限制: 1000ms
空间限制: 256MB