免费广告推广网站,深圳网络营销推广专员,shop++的优点,网站建设销售岗位职责题目#xff1a; 给出一个由非负整数组成的序列 A (A1#xff0c;A2#xff0c;A3#xff0c;....#xff0c;Av)。这个序列的长度为N判断是否存在一个偶数可以表示为在A中两个不同元素的和。若存在#xff0c;找到最大的偶数#xff0c;否则输出”-…题目 给出一个由非负整数组成的序列 A (A1A2A3....Av)。这个序列的长度为N判断是否存在一个偶数可以表示为在A中两个不同元素的和。若存在找到最大的偶数否则输出”-1” 序列A中的所有元素两两不同 所有的输入均为整数 暴力解法 # 暴力解法 n int(input()) A list(map(int, input().split())) A.sort() max_even -1 for i in range(n): for j in range(i 1, n): if (A[i] A[j]) % 2 0: max_even max(max_even, A[i] A[j]) print(max_even) 优化解法
# 优化解法
def find_largest_even_sum(A):# 初始化最大的偶数和最大的奇数以及它们的次大值# 初始值设置为-1以便在数组中找不到偶数或奇数时可以识别max_even max_odd second_max_even second_max_odd -1# 开始遍历整个数组A中的每个数字for number in A:# 如果当前数字是偶数if number % 2 0:# 检查是否需要更新最大的偶数或次大的偶数if number max_even:# 如果当前数字大于最大的偶数更新最大和次大偶数second_max_even, max_even max_even, numberelif number second_max_even:# 如果当前数字不是最大的但大于次大的偶数更新次大偶数second_max_even number# 如果当前数字是奇数else:# 检查是否需要更新最大的奇数或次大的奇数if number max_odd:# 如果当前数字大于最大的奇数更新最大和次大奇数second_max_odd, max_odd max_odd, numberelif number second_max_odd:# 如果当前数字不是最大的但大于次大的奇数更新次大奇数second_max_odd number# 计算可能的最大偶数和# 如果存在次大偶数则计算最大偶数和次大偶数的和否则设置为-1表示不存在偶数和largest_even_sum max_even second_max_even if second_max_even ! -1 else -1# 计算可能的最大奇数和# 如果存在次大奇数则计算最大奇数和次大奇数的和否则设置为-1表示不存在奇数和largest_odd_sum max_odd second_max_odd if second_max_odd ! -1 else -1# 返回两者中较大的一个即可能的最大偶数和# 如果两者都是-1则返回-1表示没有找到任何符合条件的偶数和return max(largest_even_sum, largest_odd_sum)n int(input())
A map(int, input().split())
print(find_largest_even_sum(A)) # 输出最大的偶数和或者-1