题目链接: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 }