这一题是考察排序与后续数据处理的题。我是用了map来给“和”做标记,把确定为a数组内数的数两两求和。给这些和标记,这样就可以很好的处理带有重复数的数据了~~
贴个碼:
#include<iostream>
#include<map>
#include<stdio.h>
#include<algorithm>
using namespace std;
map<int,int> mp;
int a[550],i,j,k,e=0,b[126000];
int main()
{
int n,m;
while(scanf("%d",&n)!=EOF)
{
e=0;
for(i=0;i<n;i++) scanf("%d",&b[i]);
sort(b,b+n);
mp.clear();
for(i=0;i<n;i++)
{
if(mp[b[i]])
{
mp[b[i]]--;
continue;
}
for(j=0;j<e;j++)
{
mp[a[j]+b[i]]++;
}
a[e++]=b[i];
}
cout<<e<<endl;
for(i=0;i<e;i++)
{
cout<<a[i];
if(i!=e-1) cout<<" ";
else cout<<endl;
}
}
}
这样就ojbk了