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;//结束
}