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;
}
原文地址:https://www.cnblogs.com/woaiyy/p/2527296.html