题意:中文的题目= =将各种组合可能得到的和作为下标,然后因为不同组合得到的和可能是一样的,
所以再用一个数组num[]数组,就可以将相同的和都记录下来
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include <cmath> 5 #include<algorithm> 6 using namespace std; 7 8 typedef long long LL; 9 int hash[10005],a[10005],num[10005]; 10 11 int main() 12 { 13 int n,m,i,j,k; 14 while(scanf("%d %d",&n,&m)!=EOF) 15 { 16 memset(hash,0,sizeof(hash)); 17 memset(num,0,sizeof(num)); 18 for(i=1;i<=n;i++) cin>>a[i]; 19 20 for(i=1;i<=n;i++){ 21 for(j=i+1;j<=n;j++) 22 hash[a[i]+a[j]]++;//将各种相加可能出现的数作为下标 23 } 24 25 for(i=10000,k=0;k<m;i--){ 26 while(hash[i]--) num[k++]=i; 27 } 28 29 30 31 for(i=0;i<m;i++){ 32 if(i!=m-1) printf("%d ",num[i]); 33 else printf("%d",num[i]); 34 } 35 printf(" "); 36 } 37 return 0; 38 }