📅  最后修改于: 2023-12-03 15:23:04.336000             🧑  作者: Mango
给定一个数组,找到一个长度大于等于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)
这个程序通过依次迭代数组,计算最长的偶数子序列长度。如果没有偶数元素,程序将输出“不可能”。否则将输出最长偶数子序列的长度。