题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1280

题目大意为求一数组的前M大的和,利用C++ sort函数轻松解决;

整个题目从构思到解决用了20分钟,感觉还不错!!!

另外说一下,数组要开的足够大。。。。。。1500*2999=4498500

至少要不小于此,,,,,,,,,,,,,,,,,

代码如下:

 1 #include <stdio.h>
 2 #include <algorithm>
 3 int st1[3005],sum[5000000];
 4 using namespace std;
 5 int  main()
 6 {
 7     int i,j,k,t;
 8     int n,m;
 9     while(scanf("%d%d",&n,&m)!=EOF)
10     {
11         for(i=0;i<n;i++)
12             scanf("%d",&st1[i]);
13             t=0;
14         for(j=0;j<n;j++)
15         {
16             for(k=j+1;k<n;k++)
17             {
18                 sum[t++]=st1[j]+st1[k];
19             }
20         }
21         sort(sum,sum+t);
22         for(i=t-1;i>t-m;i--)
23             printf("%d ",sum[i]);
24                 printf("%d\n",sum[t-m]);
25     }
26 }
View Code