【问题描述】:给定一个数组,在数组中找到两个数,使它们的和最接近目标值的值但不超过目标值,然后返回它们的和。
【问题示例】:输入target=15,array=[1,3,5,11,7],输出14,3+11=14。
完整代码如下:
a=list(map(int,input().split()))
b=int(input())
d=[]
for i in range(0,len(a)):
if a[i]>b:
del a[i]
for j in range(0,len(a)):
for k in range(0,len(a)):
if a[j]+a[k]-b<=0:
d.insert(0,abs(a[j]+a[k]-b))
for l in range(0,len(d)):
if d[l]==min(d):
e=d[l]
print(b-e)
代码解释:
“a=list(map(int,input().split()))
b=int(input())
d=[] ”,让用户输入一个数组,接着输入目标值,建立一个空列表d。
“for i in range(0,len(a)):
if a[i]>b:
del a[i] ”,将用户输入的数组中大于目标数的数值删除(因为要保证两个数的和不超过目标值)。
“for j in range(0,len(a)):
for k in range(0,len(a)):
if a[j]+a[k]-b<=0:
d.insert(0,abs(a[j]+a[k]-b)) “,,遍历数组,筛选出和不超过目标值的两个数,然后将两个数的和减去目标值的绝对值插入列表d中。
” for l in range(0,len(d)):
if d[l]==min(d):
e=d[l] “,遍历完数组后,遍历列表d,求出d中的最小值,然后将其赋给e。
“print(b-e) ”,打印目标值与最小绝对值的差,即为和最接近但不超过目标值的两个数的和。
运行效果展示:
(声明:以上内容均为原创)