现在有n个正整数,每一次去掉其中2个数a和b,然后加入一个数a*b+1,这样最后只剩下一个数p。 要求求出最大的p记为maxp,最小的p记为minp,和他们的差k=maxp-minp。 对于给定的数列,编程计算出它的max,min和k。
时间: 2023-04-29 07:01:21 浏览: 331
C语言程序设计-求一批数中最大值和最小值的差.c
5星 · 资源好评率100%
算法思路:
这是一道贪心算法的题目。我们可以先将给定的n个正整数从小到大排序,每次取出最小的两个数a和b,计算它们的乘积加1得到一个新的数c=a*b+1,将c插入到原数列中,再将a和b从数列中删除。重复以上步骤,直到数列中只剩下一个数p为止。
在这个过程中,我们可以发现,每次取出的两个数a和b都是当前数列中最小的两个数,因此它们的乘积加1得到的新数c一定是当前数列中最大的数。因此,最终得到的数p就是当前数列中最大的数,即maxp。
另一方面,我们可以发现,每次取出的两个数a和b都是当前数列中最小的两个数,因此它们的乘积加1得到的新数c一定是当前数列中最小的数。因此,最终得到的数p就是当前数列中最小的数,即minp。
最后,我们只需要计算maxp和minp的差值,即k=maxp-minp。
算法实现:
下面是Python实现的代码:
阅读全文