做网站职校选什么专业网络广告销售
题目:
"""
给出一个由非负整数组成的序列 A =(A1,A2,A3,....,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