2523 SORT AGAIN

http://acm.hdu.edu.cn/showproblem.php?pid=2523

求出每种组合并进行排序,题意给的是小于但不包含等于的情况,在此种情况下,适合使用基数排序的方法。

#include<cstdio>

#include<cstdlib>

#include<cmath>

#include<cstring>

int cmp(const void *a,const void *b);

int f[1010],x[10010];

int main()

{

  int tcase,n,k,i,j,temp,num,ans;

  while(scanf("%d",&tcase)==1)

  {

    while(tcase--)

    {





    scanf("%d%d",&n,&k);

    memset(x,0,sizeof(x));

    num=0;

        for(i=0;i<n;i++)

    {

        scanf("%d",f+i);

    }

    qsort(f,n,sizeof(int),cmp);

        for(i=0;i<n-1;i++)

        for(j=i+1;j<n;j++)

        {

           temp=f[j]-f[i];

           x[temp]=1;

        }

    num=0;

    //for(i=0;i<4;i++)

    //printf("%d ",k);

    for(i=0;k;i++)

    {

        if(x[i])

        {



            k--;

        }

    }



    printf("%d\n",i-1);

      }





  }

}

int cmp(const void *a,const void *b)

{

    const int *e=(const int *)a;

    const int *f=(const int *)b;

    return *e-*f;

}

 

你可能感兴趣的:(sort)