c++程序求解
【问题描述】对于给定的一列数字,数字个数为偶数,你需要解决如下问题:将给定的数列中的数字两两配对,这样每一对数字的和将形成一个新数列,对于不同的配对方法,新数列中的最大值...
【问题描述】
对于给定的一列数字,数字个数为偶数,你需要解决如下问题:将给定的数列中的数字两两配对,这样每一对数字的和将形成一个新数列,对于不同的配对方法,新数列中的最大值也不同,寻找一个好的配对方法,使得新数列中的最大值最小。
【输入格式】
第一行一个整数n(n<=10000)
第二行有n个正整数,为给定的一列数字(数字均小于20000)
【输出格式】
一个正整数,新数列中的最大值的最小值
【样例输入】
4
1 5 2 8
【样例输出】
9
【提示】:1与8配对 2与5配对 结果为9 收起
有代码最好 展开
对于给定的一列数字,数字个数为偶数,你需要解决如下问题:将给定的数列中的数字两两配对,这样每一对数字的和将形成一个新数列,对于不同的配对方法,新数列中的最大值也不同,寻找一个好的配对方法,使得新数列中的最大值最小。
【输入格式】
第一行一个整数n(n<=10000)
第二行有n个正整数,为给定的一列数字(数字均小于20000)
【输出格式】
一个正整数,新数列中的最大值的最小值
【样例输入】
4
1 5 2 8
【样例输出】
9
【提示】:1与8配对 2与5配对 结果为9 收起
有代码最好 展开
1个回答
2018-03-01
展开全部
我给你一个方法哦:
因为 个数是偶数,所以按照题设,每一个数字都会有配对的数字。 为了让最大值最小,只需要有把最大的数字和最小的数字配对就可以。
因此 你可以这样做: 把 你所有的数字从小到大排序,然后 第一个(最小)和 最后一个(最大)配对,第二个(第二小)和 倒数第二个(倒数第二小)配对,以此类推,直到完成配对。
配对之后新数列的最大就是所有可能的配对的最大的最小可能。
因为 个数是偶数,所以按照题设,每一个数字都会有配对的数字。 为了让最大值最小,只需要有把最大的数字和最小的数字配对就可以。
因此 你可以这样做: 把 你所有的数字从小到大排序,然后 第一个(最小)和 最后一个(最大)配对,第二个(第二小)和 倒数第二个(倒数第二小)配对,以此类推,直到完成配对。
配对之后新数列的最大就是所有可能的配对的最大的最小可能。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询