刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

编程实现:

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

如:正整数数据为【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

使用微信搜索喵呜刷题,轻松应对考试!

答案:

br />```pythondef find_closest_sum(nums, target):closest_sum = float('inf')closest_pair = Nonefor i in range(len(nums)):for j in range(i+1, len(nums)):num_sum = nums[i] + nums[j]if num_sum <= target and num_sum < closest_sum:closest_sum = num_sumclosest_pair = (nums[i], nums[j])if closest_pair is None:return -1else:return closest_sum# 输入nums_str = input().split(',')nums = [int(num) for num in nums_str]target = int(input())# 输出print(find_closest_sum(nums, target))```

解析:

【喵呜刷题小喵解析】

这个题目要求我们从一组正整数中找出两个数,使这两个数相加后的和,小于等于目标值并且离目标值最接近,然后将两个数的和输出。

首先,我们定义一个函数`find_closest_sum`,它接受两个参数:`nums`(正整数列表)和`target`(目标值)。

在函数内部,我们初始化`closest_sum`为无穷大,`closest_pair`为`None`。这两个变量分别用来记录当前找到的最接近目标值的两个数的和,以及这两个数本身。

然后,我们使用两个嵌套的循环遍历`nums`中的所有数对。对于每一对数,我们计算它们的和,如果这个和小于等于目标值,并且比当前找到的最接近目标值的和小,我们就更新`closest_sum`和`closest_pair`。

最后,如果`closest_pair`仍然是`None`,说明没有找到符合条件的两个数,我们返回-1;否则,我们返回`closest_sum`。

在程序的主体部分,我们首先读入正整数列表`nums`和目标值`target`,然后调用`find_closest_sum`函数,并将结果输出。
创作类型:
原创

本文链接:编程实现: 给出一组正整数数据和一个正整数(目标值),从这组正整数中找出两个数,使这两个数相加后的和

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share