hdu 1280(前m大的数)

来源:互联网 发布:无间道2 吴镇宇 知乎 编辑:程序博客网 时间:2024/06/08 20:15

题目链接:点击打开链接

题目分析:水题

自己的代码,暴力,268MS

#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;int data[3005];int sum[5000000];int cmp(int a,int b)  {return  a>b ;}int main(){       int n,m,i,j,a;    while(scanf("%d %d",&n,&m)==2)    {        a=0;        for(i=0;i<n;i++)  scanf("%d",&data[i]);        for(i=0;i<n;i++)          for(j=i+1;j<n;j++)            sum[a++]=data[i]+data[j];        sort(sum,sum+a,cmp);        for(i=0;i<m;i++)        {printf("%d",sum[i]);           if(i!=m-1) printf(" ");           else       printf("\n");        }    }    return 0;}

别人的代码,简单hash,要继续努力才行

# include<stdio.h># include<string>int main(){    int n,m,i,j,hash[10001],a[3001],flag;    while(scanf("%d%d",&n,&m)==2)    {        flag = 1;        memset(hash,0,sizeof(hash));        for(i=0;i<n;i++) scanf("%d",&a[i]);        for(i=0;i<n-1;i++)            for(j=i+1;j<n;j++)                hash[a[i]+a[j]]++;        for(i=10000;i>=0;i--)        {            while(hash[i]--)            {                if(flag){printf("%d",i);flag = 0;}                else printf(" %d",i);                m--;if(!m)break;            }              if(!m) break;         }        printf("\n");    }    return 0;}


原创粉丝点击