您的位置:首页 > 其它

hdoj 1280 前m大的数!

2013-08-07 09:55 162 查看
思路:这题和矩阵转置有一点联系,它们两两相加得到的N*(N-1)/2个和,其实就是矩阵的上三角或下三角,这一点解决了,再来个qsort就搞定啦!

还有注意数组的大小!(我在这栽跟头了





#include<stdio.h>
#include<stdlib.h>
int comp(const void *a,const void *b)
{
return *(int *)b-*(int *)a;
}
int a[3005],c[5000000];//注意数组的大小!
int main()
{

int n,m,i,j,k;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
k=0;
for(i=0;i<n;i++)//求和
for(j=0;j<n;j++)
{
if(i<j)
{
c[k]=a[i]+a[j];
k++;
}
}
qsort(c,k,sizeof(int),comp);
for(i=0;i<m-1;i++)
printf("%d ",c[i]);
printf("%d\n",c[m-1]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: