📌  相关文章
📜  国际空间研究组织 | ISRO CS 2017 – 5 月 |问题 28(1)

📅  最后修改于: 2023-12-03 15:23:04.336000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2017 – 5月 | 问题 28
问题描述

给定一个数组,找到一个长度大于等于2的最长子序列,使得子序列中的每个元素都是偶数。

输入

输入的第一行包含一个整数T,表示测试用例的数量。每个测试用例由2个空格分隔的整数n和arr[i]组成,表示数组的大小和数组的元素。

输出

对于每个测试用例,输出一个新行,其中包含长度为k的最长偶数子序列。如果没有相应的子序列,则输出“不可能”。

例子

输入:

2
5 1 2 3 4 5
5 10 8 3 7 9

输出:

4
2
解释:

在第一个测试用例中,最长的偶数子序列为2 4 在第二个测试用例中,最长的偶数子序列是10 或 8

代码

以下是一个使用Python编写的解决方案:

def findMaxSubsequence(n, arr):
    # 偶数计数器
    count = 0
    # 最大偶数子序列长度
    maxCount = 0
    for i in range(n):
        if arr[i] % 2 == 0:
            count += 1
        else:
            maxCount = max(maxCount, count)
            count = 0
    # 处理最后一个子序列
    maxCount = max(maxCount, count)
    if maxCount == 0:
        print("不可能")
    else:
        print(maxCount)

# 测试用例的数量
t = int(input())

for i in range(t):
    # 数组的大小和元素
    arr_size, arr = input().split()
    arr = list(map(int, arr.split()))
    findMaxSubsequence(arr_size, arr)

这个程序通过依次迭代数组,计算最长的偶数子序列长度。如果没有偶数元素,程序将输出“不可能”。否则将输出最长偶数子序列的长度。