5.11返校测试T1

题1:数字配对(number.cpp/in/out)


【问题描述】

对于给定的一列数字,数字个数为偶数,你需要解决如下问题:
将给定的数列中的数字两两配对,这样每一对数字的和将形成一个新数列,对于不同的配对方法,新数列中的最大值也不同,寻找一个好的配对方法,使得新数列中的最大值最小。

【输入格式】

第一行一个整数n(n<=10000)。第二行有n个正整数,为给定的一列数字(数字均小于maxint div 2)。

【输出格式】

一个正整数,新数列中的最大值的最小值。

【样例输入】

4
1 5 2 8

【样例输出】

9

【提示】

1与8配对 2与5配对 结果为9(1+8)。


下面是这个题的思路QWQ

先将数列进行排序,将数列中最大的数与最小的数相加,将相加后的最大值进行存储,最后得到的值即为最大值的最小值。(此题巨水,但是我还是做错了……少了一个头文件,成功爆零)


下面是ac题解

#include<iostream>
#include<algorithm>
#include<cstdio>//头文件(一定要检查!)
using namespace std;
int n,a[10005],b=0;
int main() 
{
//	freopen("number.in","r",stdin);
//	freopen("number.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);//将数列进行输入
	sort(a,a+n+1);//快排
	for(int i=1;i<=n/2;i++)
		b=max(b,a[i]+a[n-i+1]);//b存储最大值的最小值(好别扭的说法QWQ)
	cout<<b<<endl;//将结果进行输出
	return 0;//结束
}
原文地址:https://www.cnblogs.com/Kyriech-Francis/p/Answer_20200511_T1.html