“一眼看出哪张牌小”,即每个组合中取小的那一张作为组合的分值,用个if判断就行了,然后排序从大到小,取第k大的分值,因为是用数组存分值,所以最后取得数组为a[k-1]。
```#include<stdio.h>
#include<stdlib.h>
#define N 2500*2500
int cmp (const void *a,const void *b)//排序
{
return *(int*)b-*(int*)a;
}
int main ()
{
int sum[N];
int t,n,k;
int i,j,m=0;
int x,y;
scanf("%d",&t);
for(i=0;i<t;i++)
{
int a[2500]={0};//有t组数据,每组数据的a[]数组要清零,所以放在循坏内
scanf("%d %d",&n,&k);
for(j=0;j<n;j++)
{
scanf("%d",&a[j]);
}
m=0;//一共t组数据,所以记得更新m=0
for(x=0;x<n-1;x++)
{
for(y=x+1;y<n;y++)
{
if(a[x]<a[y])
{
sum[m]=a[x];
}
else
{
sum[m]=a[y];
}
m++;
}
}
qsort(sum,m,sizeof(int),cmp);//排序
printf("%d\n",sum[k-1]);
}
return 0;
}