招募志愿者

提交数: 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