水题,把和出现的次数记录在数组里,从大到小搜和就行了,注意不能加自己本身
和hdu2523互为逆向,我是hdu2523题解的传送门:Hdu2523 - SORT AGAIN - 哈希
#include<stdio.h>
#include<string.h>
int sum[10001];
int num[3005];
int main()
{
int m,n;
while(scanf("%d%d",&n,&m)!=EOF)
{
if(n==0)
{
break;
}
for(int i=0;i<n;i++)
{
scanf("%d",&num[i]);
}
memset(sum,0,sizeof(sum));
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
sum[num[i]+num[j]]++;
}
}
int item=0;
for(int i=10000;i>=0;i--)
{
for(int j=0;j<sum[i];j++)
{
item++;
if(item==m)
{
break;
}
else
{
printf("%d ",i);
}
}
if(item==m)
{
printf("%d\n",i);
break;
}
}
}
}