题目链接:点击打开链接
题目分析:水题
自己的代码,暴力,268MS
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int data[3005];
int sum[5000000];
int cmp(int a,int b) {return a>b ;}
int main()
{
int n,m,i,j,a;
while(scanf("%d %d",&n,&m)==2)
{
a=0;
for(i=0;i<n;i++) scanf("%d",&data[i]);
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
sum[a++]=data[i]+data[j];
sort(sum,sum+a,cmp);
for(i=0;i<m;i++)
{printf("%d",sum[i]);
if(i!=m-1) printf(" ");
else printf("\n");
}
}
return 0;
}
别人的代码,简单hash,要继续努力才行
# include<stdio.h>
# include<string>
int main()
{
int n,m,i,j,hash[10001],a[3001],flag;
while(scanf("%d%d",&n,&m)==2)
{
flag = 1;
memset(hash,0,sizeof(hash));
for(i=0;i<n;i++) scanf("%d",&a[i]);
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
hash[a[i]+a[j]]++;
for(i=10000;i>=0;i--)
{
while(hash[i]--)
{
if(flag){printf("%d",i);flag = 0;}
else printf(" %d",i);
m--;if(!m)break;
}
if(!m) break;
}
printf("\n");
}
return 0;
}