跳转至

离目标值最接近的数

题目描述

给出一组正整数数据和一个正整数(目标值),从这组正整数中找出两个数,使这两个数相加的和,小于等于目标值并且离目标值最接近,然后将两个数的和输出。

如:正整数数据为## 9,4,3,5,目标值为10,其中正整数数据中4和3、4和5、3和5的和都小于目标值10,但离目标值最接近的两个数是4和5,其和为9。

输入描述

第一行输入一组长度大于3个正整数的数据(正整数<10000),正整数之间以一个英文逗号隔开

第二行输入一个正整数n(1<n<19997),表示目标值

输出描述

输出一个整数。如果正整数数据中存在小于等于目标值并且离目标值最接近的两个数,则输出这两个数的和;如果正整数数据中不存在这样的两个数,即正整数数据中任意两个数的和都超过了目标值,则输出-1

样例输入

9,4,3,5

10

样例输出

9

代码详解


展开查看

ls = [int(i) for i in input().split(",")]

n = int(input())
maxn = -1
ls2 = []

for i in range(0, len(ls)-1):
    for j in range(i+1, len(ls)):
        if ls[i] + ls[j] <= n:
            maxn = ls[i] + ls[j]
            ls2.append(maxn)
print(max(ls2))

运行结果

展开查看
8,2,3,4,5,2,4,8,2,4
10
10